Petit proble de compréhension !

  • Initiateur de la discussion Initiateur de la discussion spouli
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

spouli

Guest
Bonjour,
Pour mon travail j'éssai d'ecrire une macros dans Visual Basic, mais j'ai un petit probleme de compréhension.


Dans une liste qui va de 1 a 20 (dans la colonne A de la feuil1)
je veux trouver le n°10.
Donc j'ai écris ca :
Private Sub CommandButton1_Click()

numerorecherche = Range("C1").Value

Range("a:a").Find(numerorecherche).Select

End Sub

Ce que ca fait :
Quand j'écris dans la cellule "C1" une valeur "< ou = 20" il me la trouve dans la collone A. Ca marche!
Quand j'écris dans la cellule "C1" le chiffre 21, Visual basic s'ouvre avec le message d'erreur de débogage.
Et surtout je ne comprend pas pourquoi ca le géne que je lui demande un chiffre qu'il ne connait pas dans la liste.

Si quelqu'un peut m'expliquer tous ca. Merci.
 
Salut

Avec la fonction Find de vba il faut qu'il trouve exactement la valeur cherchée sinon ça bug.

Il faut peut-être travailler avec une gestion d'ereur du genre si errreur alors message "la valeur n'existe pas"

Bon courage

Pascal
 
Re

Essaies ce code

Private Sub CommandButton1_Click()
On Error GoTo Message 'Si erreur va au message
numerorecherche = Range("C1").Value 'Valeur cherchée en C1
Range("a:a").Find(numerorecherche).Select 'Cherche en colonne A
Exit Sub 'Si nombre trouvé sortir macro
Message: 'Si erreur affiché le message MsgBox "Ce nombre n'existe pas dans la liste"
End Sub

Bon courage

Pascal
 
Bonsoir Spouli et Pascal76

Je pense que la fonction find cherche un caractère correspondant à la demande. Si on lui demande de chercher 1 dans une suite décroissante de 30 à 1, elle va s'arrêter sur 21 car dans la cellule, la valeur 1 existe bien dans 21.

Je propose la macro suivante :

Private Sub CommandButton1_Click()

'Recherche dans la plage ("A1:A30")
For Each C In Range("A1:A30")
' Comparaison de la valeur des cellules de la plage à la valeur de la cellule C1 et selection de la première trouvée sinon message d'erreur
If C.Value = [C1].Value Then
C.Select
Exit Sub
End If
Next
MsgBox (" La valeur cherchée est absente de la liste ! ")
End Sub

Cordialement

Bernard
 
Salut Bernard

Tu as raison j'ai tellement l'habitude d'utiliser la fonction Find pour du texte et non pour des chiffres que j'ai oublié cette précision.

M'enfin il aura la précision et un petit truc sur les erreurs.

Pascal
 
Merci Pascal76 et Bernard pour votre aide.

Je ne suis pas encore capable d'écrire des macros comme celle-ci mais je vais pouvoir l'utiliser.
Il faut que j'arrive à comprendre les boucles !

Merci encore à tout les deux.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
440
  • Question Question
Microsoft 365 Textbox userform
Réponses
10
Affichages
635
Réponses
3
Affichages
988
Réponses
3
Affichages
1 K
Retour