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 :

IF condition1 THEn macro1 ELSEIF condition2 THEN macro2 ELSEIF condition3 then macro3 [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    association sportive
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : association sportive

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Points : 6
    Points
    6
    Par défaut IF condition1 THEn macro1 ELSEIF condition2 THEN macro2 ELSEIF condition3 then macro3
    bonjour,

    l'idée est de fusionner 3 feuilles ( listing1, 2, 3) en une listing final ( qui sera archivée).
    une userform avec 3cases à cocher listing1 et/ou listing2 et/ou listing 3 et un bouton de commande
    voici le code de la userform:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CommandButton1_Click() ' bouton valider
    With UserForm1
         If Controls("listing1") = True Then
            Call fusionner_listing1
     
                ElseIf Controls("listing2") = True Then
                    Call fusionner_listing2
     
                        ElseIf Controls("listing3") = True Then
                            Call fusionner_listing3
         End If
    End With
     'Call Archivage
     End Sub
    comme vous le voyez, 3 macros ( quasi identiques à l'indice pret ) doivent être exécuter en fonction des cases à cocher respectivement true.

    voici la premiere macro appelle lorsque la case listing1 est coché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
    31
    32
    33
    34
    Sub fusionner_listing1() '*****************  fusion depot1 ************* 
     
    UserForm1.Hide
     
     
    '*****************  fusion depot1        ******************** 
    Sheets("listing final").Visible = True
    Sheets("listing 1").Visible = True
     
     
    DerLigne = Sheets("listing 1").Cells(1000, 2).End(xlUp).Row
    If Sheets("listing 1").Range("B2").Value <> "" Then  ' si la cellule sous l'entete de tableau est non vide
     
        Sheets("listing 1").Range("B2:K" & DerLigne).Copy
        Sheets("listing final").Range("B10000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
        Sheets("listing 1").Range("B2:K" & DerLigne).ClearContents   ' supprime le contenu du listing 1
     
    '***colore les cellules pour identifié le depot1  ***********************
    Application.CutCopyMode = False
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = 16775147
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
    Else
    MsgBox ("décochez listings 1 car le listing1 est vide et vous ne pouvez donc pas le fusionner")
     
    End If
    Sheets("listing 1").Visible = False
    Sheets("listing final").Visible = False
     
    End Sub
    si listing2 est cochée, la macro fusion_listing2 (resemblant à listing1 n'est pas executer comme si , une fois la macro listing1 executée , la suite du code de la userform ( elseif) n'etait pas executée ..

    HELP...merci

  2. #2
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 132
    Points : 1 803
    Points
    1 803
    Par défaut
    Bonjour,
    Citation Envoyé par zek474 Voir le message
    si listing2 est cochée, la macro fusion_listing2 (resemblant à listing1 n'est pas executer comme si , une fois la macro listing1 executée , la suite du code de la userform ( elseif) n'etait pas executée ..HELP...merci
    C'est le fonctionnement normal du ElseIf ;-)
    Comme ceci cela devrait mieux fonctionner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub CommandButton1_Click() ' bouton valider
    With UserForm1
         If Controls("listing1") = True Then         Call fusionner_listing1
     
         If Controls("listing2") = True Then         Call fusionner_listing2
     
         If Controls("listing3") = True Then         Call fusionner_listing3
     
    End With
     'Call Archivage
     End Sub
    3 macros ( quasi identiques à l'indice pret )
    Ce serait sans doute plus simple de n'en créer qu'une en lui donnant l'indice en paramètre. ;-)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub fusionner_listing(num) 
    ....
       Call fusionner_listing(1)
       Call fusionner_listing(2)...

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonsoir,

    Quelques petites remarques suggestions:

    1. Si If Controls("listing*") est booléen, ce n'est pas la peine de de le tester à TRUE
    Vous pouvez écrire If Controls("listing1") Then ...., ça évite un test supplémentaire

    2. Regarder la syntaxe du Select Case: ça permet souvent d'avoir des imbrications de conditions beaucoup plus lisibles
    Exemple dans https://silkyroad.developpez.com/VBA/UserForm/

    Bonne continuation
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] IF (condition1&condition2) OR (condition3&condition4) then
    Par alexabalica dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/12/2015, 00h27
  2. les conditions If ElseIf THEN
    Par tibss dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/07/2013, 09h38
  3. VBA, Excel If, ElseIf ,then
    Par Perrinec dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 15/05/2008, 09h09
  4. [CR 7] [débutante] pb avec if then else
    Par xs_nady dans le forum Formules
    Réponses: 8
    Dernier message: 28/05/2004, 15h36
  5. questions sur le if then end if;
    Par ghostlord79 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/02/2004, 16h35

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