Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ca bogue ou c'est mes yeux ?

6 réponses
Avatar
Daniel.C
Bonjour à tous.
Microsoft donne l'exemple suivant pour la méthode Find :
***
With Worksheets(1).Range("a1:a500")
Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = 5
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
***
L'erreur est sur la ligne Loop...
Si c "is nothing", c.Address renvoie une erreur, d'où plantage.
Dites-moi si je me trompe.
Merci d'avance.
Daniel

6 réponses

Avatar
Pounet95
Bonjour,

Pour l'avoir vécu, nombre des exemples donnés ne son, à mon avis, t que des
extraits de procédures et donc il y manque les déclarations de variables,
les instructions de branchements en cas d'erreur, etc,etc
A prendre avec des pincettes, donc !!

Bonne journée
pounet95

"Daniel.C" a écrit dans le message de groupe de
discussion :
Bonjour à tous.
Microsoft donne l'exemple suivant pour la méthode Find :
***
With Worksheets(1).Range("a1:a500")
Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = 5
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
***
L'erreur est sur la ligne Loop...
Si c "is nothing", c.Address renvoie une erreur, d'où plantage.
Dites-moi si je me trompe.
Merci d'avance.
Daniel


Avatar
michdenis
Bonjour Daniel,

Tu recherches une cellule contenant "2" que tu remplaces par 5.
Le problème a cette ligne de code :
Loop While Not c Is Nothing And c.Address <> firstAddress

C'est l'usage de "And". Lorsque toutes les cellules contenant "2"
auront été remplacées par 5, la procédure ne pourra revenir à
l'adresse de la première cellule trouvée, car elle n'existe plus.
La condition de la sortie de la boucle est impossible !

Cette condition devrait alors être suffisante : Loop While Not c Is Nothing
Avatar
Daniel.C
Bonjour Denis.
On est bien d'accord !
Cordialement.
Daniel

Bonjour Daniel,

Tu recherches une cellule contenant "2" que tu remplaces par 5.
Le problème a cette ligne de code :
Loop While Not c Is Nothing And c.Address <> firstAddress

C'est l'usage de "And". Lorsque toutes les cellules contenant "2"
auront été remplacées par 5, la procédure ne pourra revenir à
l'adresse de la première cellule trouvée, car elle n'existe plus.
La condition de la sortie de la boucle est impossible !

Cette condition devrait alors être suffisante : Loop While Not c Is Nothing
Avatar
Daniel.C
Lu un peu vite; Si il n'y a ps de modification, c'est :
Loop While c.Address <> firstAddress
qu'il faut choisir.
Daniel

Bonjour Daniel,

Tu recherches une cellule contenant "2" que tu remplaces par 5.
Le problème a cette ligne de code :
Loop While Not c Is Nothing And c.Address <> firstAddress

C'est l'usage de "And". Lorsque toutes les cellules contenant "2"
auront été remplacées par 5, la procédure ne pourra revenir à
l'adresse de la première cellule trouvée, car elle n'existe plus.
La condition de la sortie de la boucle est impossible !

Cette condition devrait alors être suffisante : Loop While Not c Is Nothing
Avatar
michdenis
| Si il n'y a ps de modification, c'est :
| Loop While c.Address <> firstAddress

Dans ce cas, les 2 conditions devraient se réaliser :
Loop While Not c Is Nothing And c.Address <> firstAddress

Cependant, il faut faire attention au traitement fait à l'intérieur
de la boucle Do.... Loop While et de son impact sur l'environnement
de la feuille de calcul comme sur l'approche Find... FindNext
(Dans certaines boucles, l'usager qui désire supprimer des lignes
ou des colonnes...)
Avatar
Daniel.C
Dans ce cas, les 2 conditions devraient se réaliser :
Loop While Not c Is Nothing And c.Address <> firstAddress



Oui, pas d'erreur, la première condition est seulement inutile.
Daniel