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 :

Erreur Loop Next for [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 74
    Par défaut Erreur Loop Next for
    Bonjour,

    Je ne comprends pas pourquoi, j obtiens le message d erreur "Next without for" lorsque j execute la MACRO suivante. QQun pourrait il m aider.
    #Merci d avance.

    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 Clean_Tiering()
    Dim i, j, o, p As Long, n, k, m As Long
    n = Range("a1").End(xlDown).Row
    k = Range("C1").End(xlDown).Row
    m = Range("E1").End(xlDown).Row
     
    For i = n To 3 Step -1
        For j = k To 3 Step -1
            For o = m To 3 Step -1
                For p = 2 To 54
                    If Cells(i, "A") = Cells(j, "D") Then
                        If Cells(j, "D") = Cells(o, "G") Then
                        Cells(i, "A").Copy
                        Cells(p, "J").Paste
                        Cells(i, "B").Copy
                        Cells(p, "K").Paste
                        Cells(j, "E").Copy
                        Cells(p, "L").Paste
                        Cells(o, "H").Copy
                        Cells(p, "M").Paste
                Next p
            Else: Next o
                        End If
        Else: Next j
                    End If
    Next i
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    D'après moi et à la première lecture (sans avoir testé) le End IF est en dessous du Next P alors que le IF est dans la boucle P et sans doute l'autre End If devra aussi être remonté.
    Ton code est bien indenté, c'est assez visible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For A = ....
      If condtion
        (code)
      End if
    Next A
    Autre chose qui n'a rien à voir avec ta question. Plutôt que d'utiliser les Copy/Paste, utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Cells(i, "A").Copy Cells(p, "J")
    Cells(i, "B").Copy Cells(p, "K")
    Cells(j, "E").Copy Cells(p, "L")
    Cells(o, "H").Copy Cells(p, "M")
    c'est plus court et plus rapide.
    Il serait aussi plus prudent de précise quel classeur et quelle feuille, ceci pour éviter les catastrophes.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 74
    Par défaut
    Merci beaucoup pour votre aide precieuse.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2012
    Messages : 84
    Par défaut
    Petite précisions supplémentaires :

    1) Dans la déclaration de vos variable, vous ne donnez le type que de p et de m.

    Il faut que vous ecriviez a chaque fois "As Long" sinon vos autres variables seront des "Variant".

    Donc il faut ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim i as Long, j As Long, o As Long, p As Long ...
    2)Vos copy paste sont tres lourds pour Excel inutilement
    Ecrivez juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Cells(i,1) = Cells(p,10)
    Cells(i,2) = Cells(p,11)
    ...
    Ca ira beaucoup plus vite vous verrez

    3) Mettez juste apres le Sub:
    Application.ScreenUpdating = False
    et à la fin avant End Sub :
    Application.ScreenUpdating = True

    La vous aurez enfin quelque chose de correct

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

Discussions similaires

  1. Problème Erreur de compilation "For Sans Next"
    Par lesly94 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/07/2015, 09h12
  2. Excel vba : Erreur de compilation for sans next
    Par BENNASR dans le forum Excel
    Réponses: 2
    Dernier message: 26/11/2014, 10h05
  3. Réponses: 3
    Dernier message: 24/11/2006, 18h20
  4. gestion d'erreur resume next sur une portion de code
    Par aarlock dans le forum Access
    Réponses: 2
    Dernier message: 02/06/2006, 15h28
  5. erreur LOOP attendu , mais pourquoi?
    Par ahage4x4 dans le forum ASP
    Réponses: 10
    Dernier message: 23/05/2005, 16h22

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