Erreur 424
Fermé
Lemarv
-
Modifié par pijaku le 27/08/2014 à 12:04
eriiic Messages postés 24585 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 27 juin 2024 - 1 sept. 2014 à 14:50
eriiic Messages postés 24585 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 27 juin 2024 - 1 sept. 2014 à 14:50
2 réponses
eriiic
Messages postés
24585
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
27 juin 2024
7 226
Modifié par eriiic le 1/09/2014 à 14:51
Modifié par eriiic le 1/09/2014 à 14:51
Bonjour,
.find retourne un range qui est un objet.
Donc c'est Set ... = ...find(,,,)
Par exemple :
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
.find retourne un range qui est un objet.
Donc c'est Set ... = ...find(,,,)
Par exemple :
Sub recherche() Dim reponse As Long, c As Range Sheets("MEMOIRE").Activate MsgBox "Cherchons l'adresse d'une armoire" 'recherche de l'armoire Do reponse = InputBox("Quelle est le numero de l'armoire à localiser?") Set c = Range("D6:D169").Find(what:=reponse, LookIn:=xlValues, lookat:=xlPart) Loop Until Not c Is Nothing MsgBox c.Address End Sub
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
borntobealive
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
27 août 2014 à 11:13
27 août 2014 à 11:13
la méthode find ne s'applique que sur des range donc il faut que tu enlève le .value et que tu le place après le find (en prenant soins d'enlever le activate qui ne sert à rien.
ensuite pour le if nothing ça va pas marcher (reponse est un integer donc il a forcement une valeur). j'ai essayer un truc mais je pense que tu vas avoir une erreur si il ne trouve rien don je me suis permis de remplace tes integer par des range. pour extraire les valeurs tu n'aura plus qu'à faire réponse.value
enfin il n'y a pas de condition sur le while donc ça va boucler à l'infini ;-)
essaye :
ensuite pour le if nothing ça va pas marcher (reponse est un integer donc il a forcement une valeur). j'ai essayer un truc mais je pense que tu vas avoir une erreur si il ne trouve rien don je me suis permis de remplace tes integer par des range. pour extraire les valeurs tu n'aura plus qu'à faire réponse.value
enfin il n'y a pas de condition sur le while donc ça va boucler à l'infini ;-)
essaye :
Sub recherche() Dim feuille As String, reponse As Range, secondreponse As Range Dim Cells As Range feuille = ActiveSheet.Name Sheets("MEMOIRE").Activate MsgBox "Cherchons l'adresse d'une armoire" 'recherche de l'armoire reponse = InputBox("Quelle est le numero de l'armoire à localiser?") reponse = Range("D6:D169").Find(what:=reponse, LookIn:=xlValues, lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False) 'recuperr la valeur reponse.value If reponse is nothing then While MsgBox "numéro hors répertoire, entrez un autre numéro d'armoire svp" secondreponse = InputBox("Quelle est le numero de l'armoire à localiser?") secondreponse = Range("D6:D169").Find(what:=reponse,LookIn:=xlValues,lookat:=xlPart,searchorder:=xlByRows,searchdirection:=xlNext,MatchCase:=False) Wend End if End Sub
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 749
27 août 2014 à 12:09
27 août 2014 à 12:09
Salut ,
@borntobealive :
lemarv va être bien embêté avec ta macro...
Le While sans condition va le contraindre à une sortie sauvage...
De plus, si reponse est typé as range, la ligne :
De plus :
@lemarv :
quel est l'intérêt de :
@borntobealive :
lemarv va être bien embêté avec ta macro...
Le While sans condition va le contraindre à une sortie sauvage...
De plus, si reponse est typé as range, la ligne :
reponse = InputBox("Quelle est le numero de l'armoire à localiser?")va tilter non?
De plus :
Dim Cells As RangeCells est à éviter car c'est un nom utilisé par VBA. Cel est mieux...
Dim Cel As RangeMais bon tu n'utilises pas cells, ni feuille par ailleurs...
@lemarv :
quel est l'intérêt de :
feuille = ActiveSheet.Name
Sheets("MEMOIRE").Activate
borntobealive
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
Modifié par borntobealive le 27/08/2014 à 14:07
Modifié par borntobealive le 27/08/2014 à 14:07
j'avais pas regarder ces déclarations (elles étaient déjà dans son code) vu que j'en avais pas besoin
un
au départ je voulais utiliser ses integer :
mais je pense que ça va renvoyer une erreur si la cellule n'existe pas non ?
Le While était déjà sans condition et comme je ne sais pas ce qu'il veut en faire je ne peux pas vraiment l'inventer
un
reponse.valuearrangera le probleme non ? (sinon il peut declarer une autre variable).
au départ je voulais utiliser ses integer :
reponse = Range("D6:D169").Find(what:=reponse, LookIn:=xlValues, lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False).value
mais je pense que ça va renvoyer une erreur si la cellule n'existe pas non ?
Le While était déjà sans condition et comme je ne sais pas ce qu'il veut en faire je ne peux pas vraiment l'inventer