IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

exécution macro sous condition


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Points : 20
    Points
    20
    Par défaut exécution macro sous condition
    Bonjour à tous,
    je me suis fait un fichier excel et je butte sur un truc/

    je voudrais qu'une macro ou instruction puisse exécuter ce qui suit :

    si mois = 1............. éxécute macro 1
    si mois = 2............. éxécute macro 2
    etc. jusqu'à 12

    Quelqu'un pourrait-il m'aider ?

    Je vous remercie par avance,
    Amicalement,
    Lionel,

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Tes 12 macros sont-elles très différentes ou ne diffèrent-elles que par quelques éléments?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Points : 20
    Points
    20
    Par défaut Bonsoir
    Merci de m'avoir fait une réponse pour avancer.
    Non, elle sont toutes les mêmes.
    La seule chose qui diffère est la suivante :
    En fait, je voudrais copier deux mêmes colonnes d'une feuille ( les infos changent chaque mois ) sur des colonnes différentes (deux colonnes par mois ) d'une autre feuilles.

    J'espère être clair.
    Amicalement,
    Lionel,

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Ben modifie ta macro et avec un paramètre numéro de mois ou en fonction du mois courant tu calcule la colonne de destination ...

    montre nous ton code de copie et explique nous comment évolue tes colonnes de destinations en fonction du mois..

  5. #5
    Membre à l'essai
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Points : 20
    Points
    20
    Par défaut Bonjour à tous
    Merci pour vos réponses.
    Je vais essayer de m’expliquer au mieux.
    Le classeur est un suivi de présence du personnel avec une mise à jour « automatique » des congés payés.
    Dans la feuille de base des saisies, il y a deux colonnes qui contiennent des formules permettant le calcul des congés « acquits » et des congés pris du mois traité.
    Dans une autre feuille, je copie à l’aide de ma macro ces deux colonnes en « valeurs » uniquement.
    Cependant, pour conserver « l’historique » mensuel des congés, chaque mois, je dois copier les colonnes dans cette feuille dans des colonnes différentes ( 2 par mois acquits et pris )
    De plus, chaque mois de janvier, je copie également la colonne report N-1.
    Voilà, en espérant être le plus clair possible.

    Voici ci-dessous les codes de copie :

    Pour le mois de janvier de chaque année
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Sheets("matrice").Select
        Range("MJ10").Select
        ActiveCell.FormulaR1C1 = "=IF(MONTH(R7C3)=1,RC[-5],0)"
        Range("MJ10").Select
        Selection.Copy
        Range("MJ10:MJ500").Select
        Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
     
        Range("MJ10:MJ500").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Selection.Replace What:="0", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Application.CutCopyMode = False
        Range("C7").Select
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
     
        Columns("MJ:MM").Select
        Selection.Copy
        Range("C7").Select
     
        Sheets("Synthèse").Select
        Range("P1").Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False]
    et pour les autres mois avec modification des colonnes de réception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sheets("matrice").Select
        Columns("ML:MM").Select
        Selection.Copy
        Range("C7").Select
     
        Sheets("Synthèse").Select
        Range("T1").Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Merci pour votre aide.
    Amicalement,
    Lionel.

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    bonjour,

    déjà commence par modifier ton code pour le rendre plus lisible et supprimer tout ces select, section, activate..
    à chaque utilisation de range, cells... précise la feuille concernée..


    pour cela utilise des variables de type worksheet..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dim shMatrice as worksheet
    set shMatrice = thisworkbook.Sheets("matrice")
    et modifie ton code selon ce principe :
    ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("matrice").Select
        Range("MJ10").Select
        ActiveCell.FormulaR1C1 = "=IF(MONTH(R7C3)=1,RC[-5],0)"
    devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    shMatrice.Range("MJ10").ActiveCell.FormulaR1C1 = "=IF(MONTH(R7C3)=1,RC[-5],0)"
    une fois cela effectué (pour le 1° mois...) , re-dit nous comment tu "calcule" la cellule destination, j'ai pas bien compris..

  7. #7
    Membre à l'essai
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Points : 20
    Points
    20
    Par défaut Je ne sais pas faire
    Je vais essayer mais je ne sais pas faire.
    Voici les macros complètes. Pouvez-vous me les réécrire ?

    Macro de janvier :

    J'inclue une formule pour reprendre le solde des CP de l'année précédente à copier dans "synthèse".

    ensuite, je copie en valeurs cette colonne de solde + mes deux colonnes pour le mois (acquits et pris )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    Sub Synthèse01()
    '
    ' Macro1 Synthèse01
    '
     
    '
        Sheets("Synthèse").Select
        ActiveSheet.Unprotect
     
        Sheets("matrice").Select
        ActiveSheet.Unprotect
     
        Columns("B:C").Select
        Selection.Copy
     
        Sheets("Synthèse").Select
        Columns("B:C").Select
        Range("B6").Activate
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Columns("B:C").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
        Sheets("matrice").Select
        Columns("MH:MH").Select
        Selection.Copy
        Columns("ME:ME").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("ME8").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "Cuml Av."
     
        Columns("LY:MH").Select
        Application.CutCopyMode = False
        Selection.Copy
     
        Sheets("Synthèse").Select
        Columns("E:N").Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
        Sheets("matrice").Select
        Range("MJ10").Select
        ActiveCell.FormulaR1C1 = "=IF(MONTH(R7C3)=1,RC[-5],0)"
        Range("MJ10").Select
        Selection.Copy
        Range("MJ10:MJ500").Select
        Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
     
        Range("MJ10:MJ500").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Selection.Replace What:="0", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Application.CutCopyMode = False
        Range("C7").Select
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
     
        Columns("MJ:MM").Select
        Selection.Copy
        Range("C7").Select
     
        Sheets("Synthèse").Select
        Range("P1").Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
        Columns("E:H").Select
        Selection.ColumnWidth = 7
        Columns("I:I").Select
        Selection.ColumnWidth = 0.5
        Columns("J:N").Select
        Selection.ColumnWidth = 7
        Columns("O").Select
        Selection.ColumnWidth = 0.5
        Columns("Q:AN").Select
        Selection.ColumnWidth = 4
        Columns("P").Activate
        Selection.ColumnWidth = 7
        Range("C7").Select
     
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
     
        Sheets("matrice").Select
        Range("C7").Select
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
        ActiveWindow.LargeScroll ToRight:=-1
        Sheets("Procèdure").Select
    End Sub
    Voici la macro pour les mois suivants :

    Je copie en valeurs mes deux colonnes pour le mois (acquits et pris )
    avec changement des 2 colonnes de destination dans "synthèse" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    Sub Synthèse02()
    '
    ' Macro1 Synthèse02
    '
     
    '
        Sheets("Synthèse").Select
        ActiveSheet.Unprotect
     
        Sheets("matrice").Select
        ActiveSheet.Unprotect
     
        Columns("B:C").Select
        Selection.Copy
     
        Sheets("Synthèse").Select
        Columns("B:C").Select
        Range("B6").Activate
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Columns("B:C").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
        Sheets("matrice").Select
        Columns("MH:MH").Select
        Selection.Copy
        Columns("ME:ME").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("ME8").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "Cuml Av."
     
        Columns("LY:MH").Select
        Application.CutCopyMode = False
        Selection.Copy
     
        Sheets("Synthèse").Select
        Columns("E:N").Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
        Sheets("matrice").Select
        Columns("ML:MM").Select
        Selection.Copy
        Range("C7").Select
     
        Sheets("Synthèse").Select
        Range("T1").Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
        Columns("E:H").Select
        Selection.ColumnWidth = 7
        Columns("I:I").Select
        Selection.ColumnWidth = 0.5
        Columns("J:N").Select
        Selection.ColumnWidth = 7
        Columns("O").Select
        Selection.ColumnWidth = 0.5
        Columns("Q:AN").Select
        Selection.ColumnWidth = 4
        Columns("P").Activate
        Selection.ColumnWidth = 7
        Range("C7").Select
     
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
     
        Sheets("matrice").Select
        Range("C7").Select
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
        ActiveWindow.LargeScroll ToRight:=-1
        Sheets("Procèdure").Select

    Merci pour votre aide,
    Amicalement,
    Lionel,

  8. #8
    Membre à l'essai
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Points : 20
    Points
    20
    Par défaut J'ai oublié de vous dire
    Voir pour macro janvier ligne 46 à 75
    et pour l'autre voir ligne 46 à 56
    Encore merci

Discussions similaires

  1. Macros sous condition dans une autre macro
    Par vvl_5 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/12/2013, 20h14
  2. [XL-2007] Macro répétitive exécutée sous condition
    Par Nonno 94 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/11/2013, 11h01
  3. [AC-2007] ERREUR 0 : Lancer une macro sous condition avec "ExecuterMacro"
    Par Octo LPO dans le forum Macros Access
    Réponses: 2
    Dernier message: 01/02/2013, 15h31
  4. impossible de démarrer macro sous condition
    Par ric009 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 07/05/2011, 22h24
  5. [AC-97] Macro sous condition
    Par julio79 dans le forum IHM
    Réponses: 0
    Dernier message: 28/05/2009, 18h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo