VBA boucle

Nashou

XLDnaute Junior
Bonjour,

Mon projet va vous paraitre simple mais j'ai une erreur et je ne sais pas comment la résoudre.

Ma colonne A contient des noms et je veux boucler sur cette colonne pour que s'il y a un nom dans la ligne, le code VBA me met "OK" à coté.

Mon code VBA :

Private Sub CommandButton1_Click()

Dim z As Integer

For z = 1 To Range("A65536").End(xlUp).Row

If (Cells(z, 1)) = Not Empty Then

Cells(z, 2) = "OK"

End If

Next z

End Sub

Il n'y a pas d'erreur de syntaxe mais la macro n'écrit pas le "OK" en cellule A2 à coté du nom.

Où est mon erreur ?
Je vous remercie.
 
G

Guest

Guest
Re : VBA boucle

Re,

Code:
Private Sub CommandButton2_Click()

Dim z As Integer
Dim y As Integer
Dim nomexiste As Boolean
Dim Res As Variant

For z = 1 To Range("A65536").End(xlUp).Row

If Not IsEmpty(Cells(z, 1)) Then

For y = 1 To Range("A65536").End(xlUp).Row

With Sheets("RESULTAT")
Res = WorksheetFunction.VLookup(.Cells(y, 1).Value, Sheets("BASE").Range("A2:A9"), 1, False)

If Not IsError(Res) Then .Cells(y, 1).Value = Res

End With

Next y

End If

Next z

End Sub

Est-ce que cela va mieux comme ça?

Si non, décide toi à nous fournir un fichier exemple avec explications claires et précise de ce que tu souhaites.

A+
 

Nashou

XLDnaute Junior
Re : VBA boucle

Re Dasco

Après multiples tentatives de codage, voici le code qui fait la différence :

Private Sub CommandButton2_Click()

Dim z As Integer
Dim y As Integer

For z = 1 To Range("A65536").End(xlUp).Row

If Not IsEmpty(Cells(z, 1)) Then

For y = 1 To Range("A65536").End(xlUp).Row

If Cells(y, 1) <> "" Then
On Error Resume Next

With Sheets("RESULTAT")
.Cells(y, 2).Value = WorksheetFunction.VLookup(.Cells(y, 1).Value, Sheets("BASE").Range("A2:B9"), 2, False)
End With
End If

Next y

End If

Next z

End Sub

le "On Error Resume Next" permet d'arrêter le traitement avant la fin s'il n'y a pas de correspondance. Il passe donc à la valeur suivante
 
G

Guest

Guest
Re : VBA boucle

Re,

Bien-sûr. Mais le On Error Resume Next est toujours un pis aller. De plus il masque toutes les erreurs qui pourraient provenir d'ailleur.

De plus il ralentit les macros.

Mais il est vrai qu'il est plus commode d'ignorer une erreur que d'en chercher l'origine.

A+
 
Dernière modification par un modérateur:

Discussions similaires

Réponses
12
Affichages
247

Statistiques des forums

Discussions
312 679
Messages
2 090 848
Membres
104 677
dernier inscrit
soufiane12