Problème boucle sans do

Bonjour,

Lorsque je fais tourner mon code je me heurte au problème suivant "Erreur de compilation : Boucle sans do".

Mon souhait est que dans le cas ou la cellule (ID,a) est vide le balayage des cellules continue sans effectuer d'opération (cf dernière ligne)

Merci d'avance

Cdlt

'Si correspondance trouvé alors stockage du numero de la ligne de la correspondance dans ID

ID = Recherche.Row

'Initialisation de la variable d'incrémentation

a = 0

'Contôle de fin de tableau : Z est le nombre de cellules vides derrière la dernière cellule "TOTAL" on le fait tourner jusqu'à 20 pour s'assurer qu'il s'agit bien de la fin du tableau

Do Until z = 20

'Consigne d'incrémentation

a = a + 1

'Pour compter le nombre de cellule vide : si la cellule de la ligne 5 et de la colonne en question est vide alors incrémentation de z

If Cells(5, a) = "" Then z = z + 1

'Contrôle fin de tableau terminé du coup réinitialisation de z

z = 0

'Suppression d'erreurs possibles : Si la cellule de la ligne 5 et colonne en question = la valeur "TOTAL" et que la cellule correspondant au numéro de ligne stocké dans ID et la colonne en question est vide alors loop

If Cells(5, a) = "TOTAL" And Cells(ID, a) = "" Then Loop

Bonjour,

Si ça te met ça, c'est que la syntaxe de ta boucle est mauvaise:

Sub test()
'Si correspondance trouvé alors stockage du numero de la ligne de la correspondance dans ID
ID = Recherche.Row
'Initialisation de la variable d'incrémentation
a = 0

Do
    'Contôle de fin de tableau : Z est le nombre de cellules vides derrière la dernière cellule "TOTAL" on le fait tourner jusqu'à 20 pour s'assurer qu'il s'agit bien de la fin du tableau
    For Z = 0 To 20
        If Cells(5, a) = "" Then
            nbVide = nbVide + 1
        End If
    Next Z
    a = a + 1
'Suppression d'erreurs possibles : Si la cellule de la ligne 5 et colonne en question = la valeur "TOTAL" et que la cellule correspondant au numéro de ligne stocké dans ID et la colonne en question est vide alors loop
Loop While Cells(5, a) = "TOTAL" And Cells(ID, a) = ""
End Sub

Voici le code que je te propose, je te laisse essayer

Merci Ausecour, cela à résolu mon problème !!

Néanmoins je me heurte à un nouveau problème qui selon moi correspond également à une erreur de syntaxe (cf erreur rouge)

Le débogeur m'indique une variable objet ou une variable de bloc with non définie

'Dans la feuille "Fourniture" colonne 2 recherche de la valeur "SOUS-TOTAL FOURNITURE DIVERSES"(qui est la dernière valeur de la colonne) et renvoie de la valeur exact

Set Bornageplage = Worksheets("Fourniture").Columns(2).Find(what:="SOUS-TOTAL FOURNITURE DIVERSES", lookat:=xlWhole)

'Une fois la dernière valeur trouvé et donc la fin de la plage de recherche stockage du numéro de cette ligne (dernière ligne de la plage) dans la variable Finligne

Finligne = Bornageplage.Row

'Dimentionnement de la plage de recherche

For i = 1 To Finligne

'Suppression d'erreurs possibles : Si dans la feuille "Fourniture" lors du balayage il rencontre une cellule vide dans la plage alors il passe à la suivante

If Worksheets("Fourniture").Cells(i, 2) = "" Then

nbvide = nbvide + 1

End If

Next i

'Dimentionnement de la plage de recherche

For i = 1 To Finligne

'Recherche de correspondance entre feuille "Cubature" colonne 2 et la plage (1 à fin de la plage) de la feuille "Fourniture" avec un renvoie de correspondance exact

Set Recherche = Worksheets("Cubature").Column(2).Find(what:=Worksheets("Fourniture").Cells(i, 2), lookat:=xlWhole)

'Suppression d'erreurs possibles : Si pas de correspondance exact car valeur de la plage absente de la feuille "Cubature" ou inversement alors passage au balayage de la cellule suivante

If Recherche Is Nothing Then

nocorresp = nocorresp + 1

End If

Next i

Bonjour,

Visiblement le problème ne vient pas de cette ligne, mais du Set Borneplage:

Set Bornageplage = Worksheets("Fourniture").Columns(2).Find(what:="SOUS-TOTAL FOURNITURE DIVERSES", lookat:=xlWhole)

Cette instruction peut être problématique si elle ne trouve pas la valeur que tu cherches, je te propose déjà de changer une chose:

Set Bornageplage = Worksheets("Fourniture").Columns(2).entireColumn.Find(what:="SOUS-TOTAL FOURNITURE DIVERSES", lookat:=xlWhole)

Malheureusement cela ne règle pas le problème.

Je n'arrive pas à identifier la source de cette erreur

Rechercher des sujets similaires à "probleme boucle"