Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA RecherVmulti

  • Initiateur de la discussion Initiateur de la discussion Arpette
  • 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 !

Arpette

XLDnaute Impliqué
Bonsoir à toutes et tous,
Je souhaite faire une macro rechercheV qui me renvoi tous les résultats à chaque fois qu'il y a une occurence. J'ai écris un morceau de code, mais ça renvoi le premier résultat. Je souhaiterais faire ceci:

Ix est en feuille "5-9-12"
Jx est en feuille "5-9-12"
Gy est en feuille "5-17"
Ty est en feuille "5-17"

Si valeur(Ix) = valeur(Gy) je renvoie Ty en Jx ensuite je boucle
Si valeur(Ix) = valeur(Gy+1) il y a insertion de ligne et je renvoie Ty+1 en Jx+1.

Merci de votre aide.
@+

Code:
Sub test()
Set plage = Sheets("5-17").Range("G2:T" & Sheets("5-9-12").Range("I65536").End(xlUp).Row)
For Each cel In Range("i2", Range("i65536").End(xlUp))
  cel.Offset(, 1) = Application.VLookup(cel, plage, 14, 0)
Next

End Sub
 
Re : VBA RecherVmulti

Bonsoir Arpette, bonsoir le forum,

Je n'ai pas lu ton post en entier mais RECHERCHEV n'a toujours renvoyé que la premiere occurrence trouvée. Regarde l'aide VBA sur les mots clé Find et FindNext pour trouver plusieurs occurrences.
 
Re : VBA RecherVmulti

Bonsoir Arpette, bonsoir le forum,

Je n'ai pas lu ton post en entier mais RECHERCHEV n'a toujours renvoyé que la premiere occurrence trouvée. Regarde l'aide VBA sur les mots clé Find et FindNext pour trouver plusieurs occurrences.
Bonsoir Robert, en formule je sais que ce n'est pas possible, mais en VB je pense que c'est possible. Si dans ma tête c'est possible, c'est qu'en VB çà doit être possible🙂, le problème c'est comment boucler et insérer si il y a une deuxième occurence😕
Bonne Soirée, à bientôt.
 
Re : VBA RecherVmulti

Bonsoir Arpette, bonsoir le forum,

Désolé de me répéter Arpette mais l'aide VBA sur le mot clé Find te propose un exemple très clair. Mais il faut que tu fasses l'effort de regarder...
 
Re : VBA RecherVmulti

Bonsoir Arpette, bonsoir le forum,

Désolé de me répéter Arpette mais l'aide VBA sur le mot clé Find te propose un exemple très clair. Mais il faut que tu fasses l'effort de regarder...
Rebonsoir Robert, oui j'ai regardé et tu as raison, mais je reste persuadé qu'il y a une solution pour contourner ce problème.
Je cherche et surtout n'oublies pas de me dire si tu trouves🙂 et vice et versa.
A bientôt
 
Re : VBA RecherVmulti

Bonsoir

Arpette
C'est cela que tu avais dans ta tête ?

VB:
Function FindAll(ByVal sText As String, ByRef oSht As Worksheet, ByRef sRange As String, ByRef arMatches() As String) As Boolean
'source: //vbadud//

' --------------------------------------------------------------------------------------------------------------
' FindAll - To find all instances of the1 given string and return the row numbers.
' If there are not any matches the function will return false
' --------------------------------------------------------------------------------------------------------------

On Error GoTo Err_Trap

Dim rFnd As Range ' Range Object
Dim iArr As Integer ' Counter for Array
Dim rFirstAddress ' Address of the First Find

' -----------------
' Clear the Array
' -----------------
Erase arMatches
Set rFnd = oSht.Range(sRange).Find(What:=sText, LookIn:=xlValues, LookAt:=xlPart)
If Not rFnd Is Nothing Then
rFirstAddress = rFnd.Address
Do Until rFnd Is Nothing
iArr = iArr + 1
ReDim Preserve arMatches(iArr)
arMatches(iArr) = rFnd.Address ' rFnd.Row ' Store the Row where the text is found
Set rFnd = oSht.Range(sRange).FindNext(rFnd)
If rFnd.Address = rFirstAddress Then Exit Do ' Do not allow wrapped search
Loop
FindAll = True
Else
' ----------------------
' No Value is Found
' ----------------------
FindAll = False
End If


' -----------------------
' Error Handling
' -----------------------
Err_Trap:
If Err <> 0 Then
MsgBox Err.Number & " " & Err.Description, vbInformation, "Find All"
Err.Clear
FindAll = False
Exit Function
End If
End Function
 
Re : VBA RecherVmulti


Bonjour Staple et merci, çà semble répondre à mon problème, mais comment je l'adapte à mon code, je n'ai pas trop l'habitude des fonctions.

Merci de ton aide
@+
 
Re : VBA RecherVmulti

Re


Comme Robert, je dirais
Mais il faut que tu fasses l'effort

et puis c'est toi l'arpette 😀

Moi je suis en week-end, et j'ai d'autres chats à fouetter 😉
(comme éplucher les patates et les carottes )

Creuses-toi les méninges: testes , adaptes, fais des erreurs, corrige, recommence, cherche encore etc..

C'est comme cela que j'ai fait pour mieux connaitre Excel au début.
 
Re : VBA RecherVmulti


Bonjour à toutes et à tous, j'ai bien suivi les conseils de Staple, mais ça ne fonctionne pas. J'ai tout mis à la poubelle et je reviens vers vous. Je vous mets un fichier pour montrer exactement ce que je veux.
Merci pour votre aide.
 

Pièces jointes

Re : VBA RecherVmulti

Bonjour

Pourquoi ne pas utiliser le filtre (automatique ou élaboré) ?

(PS: il y plusieurs exemples sur le forum relatifs à des questions similaires à la tienne)

Salut Staple, je ne peux pas faire de filtre car je fais une rechercheV de ma feuille A dans ma feuille B. Dans le cas où j'ai plusieurs occurences je veux toutes les afficher dans la feuille A et si il n'y en a pas je mets 0. Je vais chercher sur le forum si je trouve mon bonheur.
@+
 
Re : VBA RecherVmulti

Bonjour a tous

Vois si cela te convient
Je pense que la macro sera un peu moins difficile a etudier que celle proposée par mon ami Staple
Et si tu as des difficultés n'hesite pas a revenir

Bonsoir pierrejean, c'est beaucoup plus simple que la macro de staple et c'est exactement ce que je cherchais.
Encore un un grand merci à toi et à staple bien sûr.
A bientôt, bonne soirée.
 
Re : VBA RecherVmulti

Bonjour a tous

Vois si cela te convient
Je pense que la macro sera un peu moins difficile a etudier que celle proposée par mon ami Staple
Et si tu as des difficultés n'hesite pas a revenir

Bonsoir à tous, bonsoir Pierrejean, avec ta macro je dois copier les colonnes A à BG. Est-ce que je dois taper une ligne de code par colonne ou y-a-t-il un autre moyen.
Merci de ton aide.
Code:
Sub recherche()
Sheets("Feuil1").Cells.ClearContents
Sheets("A").Range("A1:C1").Copy Destination:=Sheets("Feuil1").Range("A1")
ligne = 2
For n = 2 To Sheets("A").Range("A65536").End(xlUp).Row
Sheets("Feuil1").Range("A" & ligne) = Sheets("A").Range("A" & n)
Sheets("Feuil1").Range("B" & ligne) = Sheets("A").Range("B" & n)
'Pierrejean, j'ai besoin de copier les colonnes A à BG
  Set c = Sheets("B").Columns(1).Find(Sheets("A").Range("B" & n), LookIn:=xlValues, lookat:=xlWhole)
  If Not c Is Nothing Then
     firstAddress = c.Address
        Do
          Sheets("Feuil1").Range("C" & ligne) = c.Offset(0, 2)
          Set c = Sheets("B").Columns(1).FindNext(c)
          ligne = ligne + 1
        Loop While Not c Is Nothing And c.Address <> firstAddress
   Else
    Sheets("Feuil1").Range("C" & ligne) = 0
    ligne = ligne + 1
  End If
Next n
End Sub
 
- 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

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…