Recherche d'une chaine de caractère dans une feuill
Résolu
winflow
Messages postés
157
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai la ligne suivant qui me sort une erreur 91 à savoir que la colonne en question fait partie de colonnes (de B23 à G23). Comment faire la recherche dans ce cas-ci ?
J'ai la ligne suivant qui me sort une erreur 91 à savoir que la colonne en question fait partie de colonnes (de B23 à G23). Comment faire la recherche dans ce cas-ci ?
Column(2).Cells.Find("Observations").Row - 2
A voir également:
- Recherche d'une chaine de caractère dans une feuill
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Comment faire une recherche à partir d'une photo - Guide
3 réponses
Bonjour,
Si tu nous disait tout, tout de suite, pour changer...
1- que souhaites tu faire?
2- indiques nous ton code (ça tu l'as fait partiellement du moins)
3- le code erreur (ça c'est bon)
4- ta question
exemple de question explicite (qui ressemble à ta question, mais version détaillée) :
Cordialement,
Franck
Si tu nous disait tout, tout de suite, pour changer...
1- que souhaites tu faire?
2- indiques nous ton code (ça tu l'as fait partiellement du moins)
3- le code erreur (ça c'est bon)
4- ta question
exemple de question explicite (qui ressemble à ta question, mais version détaillée) :
Je dois chercher (et trouver) le mot "observations" dans les colonnes de B à G de ma feuille Feuil1. (1-)
J'ai écrit ce code : (2-)Column(2).Cells.Find("Observations").Row - 2Code qui me renvoie une erreur 91. (3-)
Qu'est ce qui cloche et que modifier (et comment modifier) pour qu'il me trouve le mot "observations"? (4-)
Pour info, dans mon test, le mot "observations" était situé dans la cellule E25, à l'intérieur de la phrase : "Notez ici vos observations"...
Cordialement,
Franck
1- Je dois chercher (et trouver) le mot "observations" dans les cellules fusionnées de B à G dans ma feuille Feuil1. Une fois ceci fait, je récupère la ligne correspondante je la soustrait à 2 afin de déterminer où se trouve la dernière ligne d'un tableau de données.
2-J'ai écrit ce code :
3-Code qui me renvoie une erreur 91.
4- Qu'est ce qui cloche et que modifier (et comment modifier) pour qu'il me trouve le mot "observations"?
C'est mieux ?
Cordialement
Winflow
2-J'ai écrit ce code :
Column(2).Cells.Find("Observations").Row - 2
3-Code qui me renvoie une erreur 91.
4- Qu'est ce qui cloche et que modifier (et comment modifier) pour qu'il me trouve le mot "observations"?
C'est mieux ?
Cordialement
Winflow
C'est mieux ?
Nettement.
Il y a plus d'infos, c'est plus clair, on va pouvoir t'apporter une réponse.
En fait, tu utilises la méthode Find pour faire une recherche.
Très bonne idée.
Encore faut il la décortiquer un peu pour voir l'erreur.
- 1ère erreur : Columns(2) avec un "s". (ça je suppose que c'est une erreur de recopie ici, sinon le message d'erreur eut été différent...)
- 2nde, si tu cherches Columns(2) (colonne B), il ne trouvera pas si Observations est écrit en colonne G...
Essaye ceci :
Sache tout de même, que quelque soit la manière dont tu écris ton code, la méthode find renverra une erreur si Observations n'est pas écrit ou est mal orthographié.
Il faut donc prendre les devants et ne pas chercher directement le numéro de ligne.
Le principe :
Au lieu de chercher le mot Observations, on va chercher l'objet Range qui éventuellement contient le mot Observations.
Exemple (adapté à ta situation) :
Reste à traiter de deux sujets :
1- Les options facultatives de la méthode Find :
=> Lookat : permet de chercher soit la totalité, soit dans une partie :
=> Lookin : permet de chercher dans les valeurs, dans les formules etc...
=> ...
2- est ce que Find va fonctionner avec des cellules fusionnées? Pour ça, tu testes et reviens nous dire...
Nettement.
Il y a plus d'infos, c'est plus clair, on va pouvoir t'apporter une réponse.
En fait, tu utilises la méthode Find pour faire une recherche.
Très bonne idée.
Encore faut il la décortiquer un peu pour voir l'erreur.
- 1ère erreur : Columns(2) avec un "s". (ça je suppose que c'est une erreur de recopie ici, sinon le message d'erreur eut été différent...)
- 2nde, si tu cherches Columns(2) (colonne B), il ne trouvera pas si Observations est écrit en colonne G...
Essaye ceci :
Columns("B:G").Cells.Find("Observations")
Sache tout de même, que quelque soit la manière dont tu écris ton code, la méthode find renverra une erreur si Observations n'est pas écrit ou est mal orthographié.
Il faut donc prendre les devants et ne pas chercher directement le numéro de ligne.
Le principe :
Au lieu de chercher le mot Observations, on va chercher l'objet Range qui éventuellement contient le mot Observations.
Exemple (adapté à ta situation) :
Dim monRange As Range Set monRange = Columns("B:G").Cells.Find("Observations") If Not monRange Is Nothing Then MsgBox "trouvé à la ligne : " & monRange.Row
Reste à traiter de deux sujets :
1- Les options facultatives de la méthode Find :
=> Lookat : permet de chercher soit la totalité, soit dans une partie :
Lookat:=xlwhole: va trouver Observations dans "Observations", mais pas dans "Notez ici vos observations"
Lookat:=xlpartva trouver Observations dans les deux cas.
=> Lookin : permet de chercher dans les valeurs, dans les formules etc...
=> ...
2- est ce que Find va fonctionner avec des cellules fusionnées? Pour ça, tu testes et reviens nous dire...
Qu'appelles tu la première occurrence?
Supposons ceci :
Tu as le mot Observations en :
B22
C5
D2
Tu as donc deux cellules qui peuvent être considérées comme première occurrence :
B22 = 1ère en colonne
D2 = 1ère en ligne.
Tu souhaites quoi donc?
ps : j'ai fait un peu de ménage suite à ton édition, pour la clarté de cette discussion.
Supposons ceci :
Tu as le mot Observations en :
B22
C5
D2
Tu as donc deux cellules qui peuvent être considérées comme première occurrence :
B22 = 1ère en colonne
D2 = 1ère en ligne.
Tu souhaites quoi donc?
ps : j'ai fait un peu de ménage suite à ton édition, pour la clarté de cette discussion.
Problème résolu avec
grâce à la doc CCM https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel#le-code-vba-correspondant
Columns("B:G").Cells.Find("Observations", Cells(18, 2)).Row - 2
grâce à la doc CCM https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel#le-code-vba-correspondant
On ne peut pas faire de recherche sur des cellules fusionnées ... Il faut choisir entre : se servir d'Excel pour faire de belles présentations ou se servir d'Excel comme outil de gestion.
Sinon voir ici pour l'erreur 91
Sinon voir ici pour l'erreur 91