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 :

Boucles imbriquées (nested loops)


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Economiste d'entreprise
    Inscrit en
    Février 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Economiste d'entreprise
    Secteur : Finance

    Informations forums :
    Inscription : Février 2014
    Messages : 31
    Points : 10
    Points
    10
    Par défaut Boucles imbriquées (nested loops)
    Bonsoir,

    Je n'arrive pas à faire tourner le petit bout de macro suivant sans que les lignes "Dim" viennent en rouge en pointant sur le signe "=" (fin d'instruction attendue ou erreur de syntaxe):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim numbers() As Integer = {1, 4, 7}
    Dim letters() As String = {"a", "b", "c"}
    For Each number As Integer In numbers<div style="margin-left:40px">For Each letter As String In letters</div><div style="margin-left:80px">Debug.Write(number.ToString & letter & " ")</div><div style="margin-left:40px">Next</div>Next
    Debug.WriteLine("")
    Un tout grand à mon sauveur.
    Bien cordialement
    Michel

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    en vba ce n'est pas pareil à vb.net

    en vba il faut déclarer les variables comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim numbers(3) As Integer
    et leur affecter des valeur plus loin

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par gnain Voir le message
    en vba ce n'est pas pareil à vb.net
    Maudit !!!!!!!!!!!! Surtout que, même si je le sais, je me fais prendre à tout coup.

    Et puis, c'est cette habitude de VBA de piquer une crise quand on laisse un trou à droite du signe = le temps de faire un copier-coller ou un glisser-déposer

  4. #4
    Membre à l'essai
    Homme Profil pro
    Economiste d'entreprise
    Inscrit en
    Février 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Economiste d'entreprise
    Secteur : Finance

    Informations forums :
    Inscription : Février 2014
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Merci gnain!

    Je n'avais rien trouvé d'autre sur Internet pour répondre à mon besoin et j'avais tenté de m'inspirer de ces lignes de code.
    Je pense qu'il soit dans ce cas préférable de préciser mon besoin:

    J'ai un certain nombre d'opérations à effectuer en boucle, mais cette partie ne pose pas de problème.
    Maintenant ce bloc d'opérations doit être effectué pour une trentaine de pays (AUT, FRA, CAN, etc.) et, pour chaque pays, une dizaine de marques (ROL, CAR, etc.).
    La boucle doit prendre le premier pays (AUT) et effectuer pour chacune des marques le bloc d'opérations (AUT et ROL, AUT et CAR, AUT et ..., etc.).

    J'aimerais donc pouvoir lister ces pays et ces marques pour que la macro traite le bloc d'opérations à chacun des pays-marques (il prend le premier pays et passe toutes les marques, puis prend le deuxième pays et passe toutes les marques, etc.).

    Je serais bien reconnaissant d'obtenir encore un bout de réponse à ce sujet.
    Un tout grand merci par avance!

    Cordialement
    Michel

  5. #5
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Il vous faut une boucle dans une boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 1 to NB_DE_Pays
     
         For j = 1 to NB_Marque
                'récupération pour pays(i) les marque(j)
         next j
     
    next i

  6. #6
    Membre à l'essai
    Homme Profil pro
    Economiste d'entreprise
    Inscrit en
    Février 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Economiste d'entreprise
    Secteur : Finance

    Informations forums :
    Inscription : Février 2014
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Merci gnain. J'avais compris la logique de cette fonction de boucles imbriquées dans mon manuel visual basic. Mon véritable problème (de débutant...) se situe dans la liste des pays et des marques, à quel endroit puis-je les faire figurer? Après les "Dim" ?

  7. #7
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Ce code liste tout les marque pour chaque pays colonne A pour pays et colonne B pour marque


    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 test()
     
    Dim Pays(2) As String
    Dim Marque(3) As String
    Dim ligne As Integer
     
    Pays(0) = "Canada"
    Pays(1) = "US"
    Pays(2) = "Suisse"
     
    Marque(0) = "Marque_1"
    Marque(1) = "Marque_2"
    Marque(2) = "Marque_3"
    Marque(3) = "Marque_4"
     
    ligne = 0
     
    For i = 0 To 2
        For j = 0 To 3
            Cells(ligne + 1, 1).Value = Pays(i)
            Cells(ligne + 1, 2).Value = Marque(j)
            ligne = ligne + 1
        Next j
    Next i
     
    MsgBox "fin"
     
    End Sub

  8. #8
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272

  9. #9
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Ce qui serait intéressant de savoir, c'est comment sont organisées tes données dans ton classeur et quelle opération tu cherche à faire, ceci éviterai des réponses tout azimut.

    Hervé.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Economiste d'entreprise
    Inscrit en
    Février 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Economiste d'entreprise
    Secteur : Finance

    Informations forums :
    Inscription : Février 2014
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Un grand merci à 'gnain', c'est exactement ce qu'il me fallait. Je pensais que l'on pouvait les lister à la suite comme dans mon tout premier message.
    Merci également aux autres intervenants! Je vais élargir mes connaissances en me plongeant dans les 'variables tableaux en VBA Excel'.
    Concernant la précision de la question, j'avais volontairement omis de mentionner les opérations répétées sur lesquelles je n'avais pas de question. Mais bon, j'y penserai au mieux à chaque fois.


    Bonne journée et semaine à tous!

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

Discussions similaires

  1. [XL-2003] boucles imbriquées for / do loop
    Par Lilou51 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/11/2010, 13h00
  2. boucle imbriquée
    Par zhoom dans le forum C
    Réponses: 4
    Dernier message: 07/11/2005, 13h10
  3. [Débutant]Boucle imbriquée avec des bornes différentes
    Par Hayato dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 29/08/2005, 16h23
  4. Boucles imbriquées
    Par Immobilis dans le forum ASP
    Réponses: 28
    Dernier message: 14/01/2005, 13h17
  5. [XSL]boucle imbriquée avec condition
    Par kor dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 11/01/2005, 14h19

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