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 :

Aide boucles VBA


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Ingénieur Logistique
    Inscrit en
    Mars 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Logistique

    Informations forums :
    Inscription : Mars 2017
    Messages : 4
    Par défaut Aide boucles VBA
    Bonjour à tous,

    J'aurais besoin d'aide sur des boucles dans VBA. J'ai plusieurs boucles imbriquées l'une dans l'autre, mais jamais je ne rentre dans toutes les boucles. Cela fait plusieurs jours que je tourne en rond, c'est le cas de le dire, alors je fais appel à vos lumières.

    Je vous mets en PJ mon code, et je vous explique ce que je veux faire.

    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
    'Dans le fichier Summary C of C, sélectionner les libellés et les copier
     
    'Sélectionner le fichier Summary C of C correspondant
     
    msg = MsgBox("Veuillez ouvrir le fichier Sanmina Summary C of C ", vbYesNo)
    chemin = Application.GetOpenFilename
        If chemin <> "Faux" Then
            Application.ScreenUpdating = False
     
    Application.DisplayAlerts = False
     
    Workbooks.Open Filename:=chemin
    Libelles = ActiveWorkbook.Name 'fichier Sanmina C of C
     
    Sheets(1).Select
    derligne_libelles = Sheets(1).Range("A2").CurrentRegion.Rows.Count
    derligne_libelles = derligne_libelles + 1
     
     
    ligLib = 2 'on positionne le pointeur des libellés dans Summary C of C au début
    For j = ligLib To derligne_libelles
     
    'on cherche le n°de PO
        Workbooks(Sanmina).Activate
        derligne = Sheets(1).Range("F10").End(xlDown).Row
        derligne = derligne + 1
        i = derligne
        For ligAWB = 10 To derligne
            If Workbooks(Libelles).Sheets(1).Cells(ligLib, "D").Value <> Workbooks(Sanmina).Sheets(1).Cells(ligAWB, "F") Then
            'on n'a pas trouvé le n° de PO, on passe à la ligne suivante
                GoTo ligLibsuivante
            End If
        Next 'on teste la ligne suivante
     
        'Le n° de PO correspond,on cherche le libellé correspondant
            Workbooks(Libelles).Sheets(1).Activate
            Range("H" & j).Copy
            Workbooks(Sanmina).Sheets(1).Activate
            Range("C" & ligAWB).Select
            Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
     
        'on a traité la ligne, on passe à la suivante
        GoTo ligLibsuivante
     
    ligLibsuivante:
        ligLib = ligLibsuivante + 1
     
    Next
     
    ' Enregistrement du fichier avec n° HAWB
     
        ActiveSheet.Name = Range("L10").Value
        AWB = Range("L10")
        Workbooks(fichiermacro).Sheets("Enregistrement").Activate
        Adresse_enregistrement = Range("A1")
        ChDir "" & Adresse_enregistrement & ""
        Workbooks(Sanmina).SaveAs Filename:="" & Adresse_enregistrement & "" & AWB & ".xls"
     
        End If
    End Sub
    Sachant qu'il y a en amont déjà un bout de macro qui fait de la mise en forme.
    En gros, j'ai on fichier qui contient la macro. Cette macro a 2 buts : faire de la mise en forme sur un fichier envoyé par un de nos fournisseurs pour qu'on puisse l'intégrer dans nos propres fichiers (ça, ça fonctionne très bien) et ensuite, à l'aide d'un second fichier envoyé par le fournisseur, faire l'appairage entre le code article (qui est dans le premier fichier, déjà mis en forme) et son libellé (dans un second fichier).

    J'ai donc déjà le fichier mis en forme ouvert, et j'appelle le second fichier, pour faire ma recherche de libellé.
    Le problème c'est que la boucle tourne, mais ne trouve jamais de correspondance. Je ne sais pas si je suis super claire... La partie qui beugue selon moi est à partir de "on cherche le n° de PO".

    Merci de votre aide, n'hésitez pas si ce n'est pas clair.

    Mandou

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Le problème, c'est que tu ne compares qu'à la première ligne de ta liste de recherche. Et si cette première ligne est différente, tu arrêtes alors qu'il faudrait poursuivre aux lignes suivantes.

    Essaye ça (ça remplace toute la partie de "on cherche le n°de PO" jusqu'au dernier Next) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        For ligAWB = 10 To Workbooks(Sanmina).Sheets(1).Range("F10").End(xlDown).Row + 1
            If Workbooks(Libelles).Sheets(1).Cells(ligLib, "D").Value = Workbooks(Sanmina).Sheets(1).Cells(ligAWB, "F") Then
                'Le n° de PO correspond,on cherche le libellé correspondant
                Workbooks(Libelles).Sheets(1).Range("H" & j).Copy
                Workbooks(Sanmina).Sheets(1).Range("C" & ligAWB).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
                Exit For
            End If
        Next ligAWB
    Next j
    Un conseil : si tu veux coder proprement, modère l'usage des Selection et abandonne l'usage des GoTo.

    Et aussi, évites les instructions comme "Application.DisplayAlerts = False" tant que tu es en phase de débugage.
    A moins que tu apprécies de mélanger débugage et colin-mayard.

Discussions similaires

  1. boucle VBA besoin d'aide
    Par BENNASR dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 08/12/2014, 13h22
  2. Aide boucle For VBA
    Par Marcfruye dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/11/2012, 20h35
  3. Réponses: 3
    Dernier message: 08/12/2006, 17h22
  4. Impossible d'accéder à l'aide de VBA
    Par bestall666 dans le forum VBA Access
    Réponses: 9
    Dernier message: 03/08/2006, 14h21
  5. séléction d'un ligne excel et boucle [vba]
    Par lou87 dans le forum Access
    Réponses: 2
    Dernier message: 06/06/2006, 12h00

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