VBA Fonction Find
Résolu/Fermé
dan03
Messages postés
31
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
16 décembre 2021
-
Modifié le 12 oct. 2020 à 15:33
dan03 Messages postés 31 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 16 décembre 2021 - 15 oct. 2020 à 10:17
dan03 Messages postés 31 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 16 décembre 2021 - 15 oct. 2020 à 10:17
A voir également:
- Fonction find vba
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Cette fonction n'est pas disponible actuellement tv lg - Forum Téléviseurs
- Fonction filtre excel n'existe pas - Forum Excel
5 réponses
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
12 oct. 2020 à 13:31
12 oct. 2020 à 13:31
bonjour,
merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
exemple:
merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
exemple:
Dim Ligne as long, An As Integer, trouve1 as range, trouve2 as range set trouve1=Columns(2).Find(AChaineDate, lookat:=xlWhole) Ligne = trouve1.Row set trouve2=Columns(2).FindNext(trouve1)
dan03
Messages postés
31
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
16 décembre 2021
2
12 oct. 2020 à 14:18
12 oct. 2020 à 14:18
Merci de ta réponse
Mais ce code ne fonctionne pas
Si AChaineDate existe dans une ligne précédente, Ligne reprend cette ligne
C'est Pourquoi, je pensais utiliser l'argument After de la fonction Find
As-tu une idée ?
Merci
Mais ce code ne fonctionne pas
Si AChaineDate existe dans une ligne précédente, Ligne reprend cette ligne
C'est Pourquoi, je pensais utiliser l'argument After de la fonction Find
As-tu une idée ?
Merci
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
12 oct. 2020 à 15:28
12 oct. 2020 à 15:28
peut-être pourrais-tu expliquer ce que tu souhaites obtenir?
sinon, difficile de suggérer comment modifier ton code.
pourquoi fais-tu cette recherche? que veux tu faire avec la ou les lignes trouvées?
sinon, difficile de suggérer comment modifier ton code.
pourquoi fais-tu cette recherche? que veux tu faire avec la ou les lignes trouvées?
dan03
Messages postés
31
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
16 décembre 2021
2
>
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
12 oct. 2020 à 16:00
12 oct. 2020 à 16:00
Bonjour,
En fait, j'ai 1 colonne A qui contient des Années, et 1 B qui contient Jour et Mois
Ma variable AChaineDate contient Jour et Mois soit, colonne B
Je veux récupérer l'Année (colonne A) qui se trouve sur la même ligne que AChaineDate
Si la valeur AChaineDate est unique dans la colonne B, cela fonctionne avec Find (comme je l'ai fait)
Mais si AChaineDate existe plusieurs fois, la fonction Find cherchant depuis le début de la colonne m'indique une Année fausse (celle trouvée la première)
C'est pourquoi, je voulais utiliser l'argument "After", mais je n'ai pas réussi
En fait, je veux que la recherche se poursuive et non reparte de B1
En fait, j'ai 1 colonne A qui contient des Années, et 1 B qui contient Jour et Mois
Ma variable AChaineDate contient Jour et Mois soit, colonne B
Je veux récupérer l'Année (colonne A) qui se trouve sur la même ligne que AChaineDate
Si la valeur AChaineDate est unique dans la colonne B, cela fonctionne avec Find (comme je l'ai fait)
Mais si AChaineDate existe plusieurs fois, la fonction Find cherchant depuis le début de la colonne m'indique une Année fausse (celle trouvée la première)
C'est pourquoi, je voulais utiliser l'argument "After", mais je n'ai pas réussi
En fait, je veux que la recherche se poursuive et non reparte de B1
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
>
dan03
Messages postés
31
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
16 décembre 2021
12 oct. 2020 à 16:06
12 oct. 2020 à 16:06
quand tu écris "Je veux récupérer l'Année (colonne A) qui se trouve sur la même ligne que AChaineDate", veux-tu écrire que tu veux récupérer toutes les années? pour en faire quoi?
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
>
dan03
Messages postés
31
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
16 décembre 2021
12 oct. 2020 à 16:07
12 oct. 2020 à 16:07
tu trouveras un exemple ici: https://www.commentcamarche.net/faq/18696-vba-recherche-find-avec-retour-multiple
jordane45
Messages postés
38289
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2024
4 703
>
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
12 oct. 2020 à 16:53
12 oct. 2020 à 16:53
Bonjour,
mieux vaut utiliser le lien proposé par cs_Le Piverts
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel
mieux vaut utiliser le lien proposé par cs_Le Piverts
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
12 oct. 2020 à 14:26
12 oct. 2020 à 14:26
dan03
Messages postés
31
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
16 décembre 2021
2
12 oct. 2020 à 18:18
12 oct. 2020 à 18:18
Merci pour votre aide
Mais personne ne m'a donné un exemple avec Find et l'argument After
J'aimerai un exemple concret
Cordialement
Mais personne ne m'a donné un exemple avec Find et l'argument After
J'aimerai un exemple concret
Cordialement
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
12 oct. 2020 à 19:00
12 oct. 2020 à 19:00
dans le lien donné il y a un exemple concret. C'est à toi de l'adapter!
voilà
Sub Principale() Dim Plage As Range Dim Lignes(), i As Long Dim Texte As String Dim Flag As Boolean Set Plage = Sheets("Feuil1").Range("A1:A20") 'plage de recherche Texte = "mot" 'expression cherchée Flag = Find_Next(Plage, Texte, Lignes()) 'appel de la fonction 'si fonction retourne Vrai = expression trouvée dans la plage If Flag Then 'restitution des lignes correspondantes For i = LBound(Lignes) To UBound(Lignes) Debug.Print Lignes(i) Next i Else MsgBox "L'expression : " & Texte & " n'a pas été trouvée dans la plage : " & Plage.Address End If End Sub 'Sources : Michel_m 'http://www.commentcamarche.net/forum/affich-31432413-importation-de-donnees-sans-doublons#9 Function Find_Next(Rng As Range, Texte As String, Tbl()) As Boolean Dim Nbre As Integer, Lig As Long, Cptr As Long Nbre = Application.CountIf(Rng, Texte) If Nbre > 0 Then ReDim Tbl(Nbre - 1) Lig = 1 For Cptr = 0 To Nbre - 1 Lig = Rng.Find(Texte, Cells(Lig, Rng.Column), xlValues).Row Tbl(Cptr) = Lig Next Else GoTo Absent End If Find_Next = True Exit Function Absent: Find_Next = False End Function
voilà
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
Modifié le 13 oct. 2020 à 09:19
Modifié le 13 oct. 2020 à 09:19
Voilà un exemple concret adapter à ta colonne de recherche:
voilà mais la recherche est faite sur une cellule texte et non une date
Option Explicit Sub Principale() Dim Plage As Range Dim Lignes(), i As Long Dim Texte As String Dim Flag As Boolean Set Plage = Sheets("Feuil1").Range("B1:B20") 'plage de recherche à adapter Texte = "20 mars" 'expression cherchée à adapter Flag = Find_Next(Plage, Texte, Lignes()) 'appel de la fonction 'si fonction retourne Vrai = expression trouvée dans la plage If Flag Then 'restitution des lignes correspondantes For i = LBound(Lignes) To UBound(Lignes) Debug.Print Lignes(i) Range("C" & Lignes(i)).Value = Range("A" & Lignes(i)).Value 'résultat à adapter Next i Else MsgBox "L'expression : " _ & Texte _ & " n'a pas été trouvée dans la plage : " _ & Plage.Address End If End Sub 'Sources : Michel_m 'http://www.commentcamarche.net/forum/affich-31432413-importation-de-donnees-sans-doublons#9 Function Find_Next(Rng As Range, Texte As String, Tbl()) As Boolean Dim Nbre As Integer, Lig As Long, Cptr As Long Nbre = Application.CountIf(Rng, Texte) If Nbre > 0 Then ReDim Tbl(Nbre - 1) Lig = 1 For Cptr = 0 To Nbre - 1 Lig = Rng.Find(Texte, Cells(Lig, Rng.Column), xlValues).Row Tbl(Cptr) = Lig Next Else GoTo Absent End If Find_Next = True Exit Function Absent: Find_Next = False End Function
voilà mais la recherche est faite sur une cellule texte et non une date
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
12 oct. 2020 à 19:48
12 oct. 2020 à 19:48
difficile de donner un exemple qui correspond à ce que tu veux réaliser, puisque tu ne l'expliques pas.
quand tu écris "Je veux récupérer l'Année (colonne A) qui se trouve sur la même ligne que AChaineDate", veux-tu écrire que tu veux récupérer toutes les années? pour en faire quoi?
quand tu écris "Je veux récupérer l'Année (colonne A) qui se trouve sur la même ligne que AChaineDate", veux-tu écrire que tu veux récupérer toutes les années? pour en faire quoi?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dan03
Messages postés
31
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
16 décembre 2021
2
15 oct. 2020 à 10:17
15 oct. 2020 à 10:17
Malgré vos explications, je n'ai pas réussi
J'ai du mal exprimé mon problème
Je vais modifier totalement mon code
Je vous remercie pour votre aide et je mets le sujet en résolu
J'ai du mal exprimé mon problème
Je vais modifier totalement mon code
Je vous remercie pour votre aide et je mets le sujet en résolu