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écuter une boucle dans une macro deux fois [XL-2019]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    comptable principal
    Inscrit en
    Octobre 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Autre

    Informations professionnelles :
    Activité : comptable principal
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2010
    Messages : 434
    Points : 170
    Points
    170
    Par défaut Exécuter une boucle dans une macro deux fois
    Bonjour

    je souhaite savoir comment répéter l'exécution une boucle deux fois d'un une macro

    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
    Sub Excdeusfois()
    Dim Arr
    Dern = Range("A" & Rows.Count).End(xlUp).Row
    Arr = Range("A2:K" & Dern)
    Set a = CreateObject("Scripting.Dictionary")
     
     
    For i = LBound(Arr) To UBound(Arr)
        Mle = Arr(i, 3) & Arr(i, 4)
     
        If Not a.Exists(Mle) Then
            a.Add Mle, Mle
        End If
     
    Next i
     
    k = 2
    For Each c In a.keys
        Range("M" & k).Value = Left(a.Item(c), 3)
        Range("N" & k).Value = Right(a.Item(c), 7)
        k = k + 1
    Next c
     
    'je souhaite que le code demmare de nouveau a partir For i = LBound(Arr) To UBound(Arr) et se termine juste apres la fin de cette boucle et dirige vers N°2
     
    N°2:
    '=================================
     
     
     
     
    '=================================
     
     
    End Sub
    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    En mettant le tout dans une autre boucle

    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
    Sub Excdeusfois()
        Dim Arr
        Dern = Range("A" & Rows.Count).End(xlUp).Row
        Arr = Range("A2:K" & Dern)
        Set a = CreateObject("Scripting.Dictionary")
     
        For j = 1 To 2 '2 passages
            For i = LBound(Arr) To UBound(Arr)
                Mle = Arr(i, 3) & Arr(i, 4)
                If Not a.Exists(Mle) Then
                    a.Add Mle, Mle
                End If
            Next i
     
            k = 2
            For Each c In a.keys
                Range("M" & k).Value = Left(a.Item(c), 3)
                Range("N" & k).Value = Right(a.Item(c), 7)
                k = k + 1
            Next c
        Next j
    End Sub
    Cdlt

  3. #3
    Membre habitué
    Homme Profil pro
    comptable principal
    Inscrit en
    Octobre 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Autre

    Informations professionnelles :
    Activité : comptable principal
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2010
    Messages : 434
    Points : 170
    Points
    170
    Par défaut
    Bonjour
    Merci Mr ARTURO
    Oui C'est une très bonne idée mais je souhaite répéter que cette boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    For i = LBound(Arr) To UBound(Arr)
        Mle = Arr(i, 3) & Arr(i, 4)
     
        If Not a.Exists(Mle) Then
            a.Add Mle, Mle
        End If
     
    Next i
    Ou bien je doit repier cette boucle et la coller avant la fin du code

    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 Excdeusfois()
    Dim Arr
    Dern = Range("A" & Rows.Count).End(xlUp).Row
    Arr = Range("A2:K" & Dern)
    Set a = CreateObject("Scripting.Dictionary")
     
     
    For i = LBound(Arr) To UBound(Arr)
        Mle = Arr(i, 3) & Arr(i, 4)
     
        If Not a.Exists(Mle) Then
            a.Add Mle, Mle
        End If
     
    Next i
     
    k = 2
    For Each c In a.keys
        Range("M" & k).Value = Left(a.Item(c), 3)
        Range("N" & k).Value = Right(a.Item(c), 7)
        k = k + 1
    Next c
     
     '=========== Ici commence La répétition de la boucle=========================
    For i = LBound(Arr) To UBound(Arr)
        Mle = Arr(i, 3) & Arr(i, 4)
     
        If Not a.Exists(Mle) Then
            a.Add Mle, Mle
        End If
     
    Next i 
     
    End Sub

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 271
    Points
    34 271
    Par défaut
    Salut,

    en imbriquant le tout dans une boucle et en ajoutant un test

    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
    Sub Excdeusfois()
    Dim Arr
    Dern = Range("A" & Rows.Count).End(xlUp).Row
    Arr = Range("A2:K" & Dern)
    Set a = CreateObject("Scripting.Dictionary")
    Dim j as Integer 'ajout
    For j=1 To 2 'ajout
    For i = LBound(Arr) To UBound(Arr)
        Mle = Arr(i, 3) & Arr(i, 4)
     
        If Not a.Exists(Mle) Then
            a.Add Mle, Mle
        End If
     
    Next i
    if j=1 Then
    k = 2
    For Each c In a.keys
        Range("M" & k).Value = Left(a.Item(c), 3)
        Range("N" & k).Value = Right(a.Item(c), 7)
        k = k + 1
    Next c
     End IF
     
     
    Next j 'ajout
     
    End Sub
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre habitué
    Homme Profil pro
    comptable principal
    Inscrit en
    Octobre 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Autre

    Informations professionnelles :
    Activité : comptable principal
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2010
    Messages : 434
    Points : 170
    Points
    170
    Par défaut
    Salut
    Merci Beaucoup Mr Jean-Philippe André c'est une très bonne idée et ca fonctionne très bien.
    Merci à tous ceux qui m'ont aidé à résoudre ce problème et J'ai appris quelque chose de nouveau.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/07/2015, 13h43
  2. Réponses: 18
    Dernier message: 18/11/2013, 10h50
  3. exécuter une macro 1 seule fois par semaine ?
    Par deby23 dans le forum VBA Access
    Réponses: 9
    Dernier message: 20/12/2012, 11h22
  4. Réponses: 11
    Dernier message: 29/05/2008, 16h26
  5. Exécuter une macro dans une autre macro
    Par marc56 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/02/2008, 13h17

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