Effectuer une recherche dans une colonne en macro

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 !

klorane

XLDnaute Occasionnel
Bonsoir à tous,

j'aurai besoin à l'aide d'une macro d'effectuer une recherche dans une colonne.

Je joins un fichier en exemple :

Si par exemple, j'inscris en B2 : 404 et que je clique sur le bouton "Chercher", il faudrait que la macro effectue une recherche dans la colonne E de la valeur indiquée en B2 (ici : 404) et qu'elle inscrive, lorsqu'elle a trouvé en B7 la valeur de E et en C7 la valeur de F qui est rattachée.
Et que si la valeur n'est pas trouvée dans E, s'inscrive en B7 : "0" et C7 affiche : "Aucun résultat".

Pour l'exemples se qui donne :

si B2 = 404 en cliquant sur "Chercher" : Recherche dans E de la valeur 404.
Inscrire en B7 : 404 et en C7 : Yvon.

si B2 = 606 en cliquant sur "Chercher" : Recherche dans E de la valeur 606.
Inscrire en B7 : 606 et en C7 : Laurent.

si B2 = 819 en cliquant sur "Chercher" : Recherche dans E de la valeur 819.
Inscrire en B7 : 0 et en C7 : Aucun resultat. (Car 819 n'existe pas dans la colonne E)

La colonne E étant ammenée à etre complétée dans le temps, il faudrait que la macro recherche dans toute la colonne E tant qu'il ya des valeurs mais que si les cellules sont vides, la recherche s'arrete automatiquement.

Merci de votre aide.

Klorane
 

Pièces jointes

Dernière édition:
Re : Effectuer une recherche dans une colonne en macro

Re


Tu peux aussi utiliser RECHERCHEV
Recherchevv.png
 
Re : Effectuer une recherche dans une colonne en macro

Re

Il suffit alors de transformer la solution formule en solution macro en un tour de main 🙄
Voici donc trois écritures possibles de la formule RECHERCHEV de mon précédent message
Code:
Sub Bouton1_QuandClic()
Dim quoi As Range: Set quoi = Range("B2")
Dim ou As Range: Set ou = Range("$E$1:$F$6")
[B7] = Application.VLookup(quoi, ou, 1, 0): [C7] = Application.VLookup(quoi, ou, 2, 0)
End Sub
Code:
Sub aa()
Range("B7").FormulaR1C1 = "=VLOOKUP(RC2C2,R1C5:R6C6,1,0)": Range("C7").FormulaR1C1 = "=VLOOKUP(RC2C2,R1C5:R6C6,2,0)"
End Sub
Code:
Sub bb()
[B7].FormulaR1C1 = "=VLOOKUP(R2C2,R1C5:R6C6,1,0)": [C7].FormulaR1C1 = "=VLOOKUP(R2C2,R1C5:R6C6,2,0)"
With [B7:C7]: .Value = .Value: End With
End Sub
 
Dernière édition:
Re : Effectuer une recherche dans une colonne en macro

Bonjour et merci pour vos réponses!

j'ai opté pour cette méthode (qui me parle beaucoup plus) et ça fonctionne:

Sub Bouton1_QuandClic()
Dim quoi As Range: Set quoi = Range("B2")
Dim ou As Range: Set ou = Range("$E$1:$F$6")
[B7] = Application.VLookup(quoi, ou, 1, 0): [C7] = Application.VLookup(quoi, ou, 2, 0)
End Sub

Par contre, que faut il ajouter dans le code ci dessus pour que SI la valeur B2 n'est pas trouvée dans la colonne E, un message box s'ouvre en indiquant par exemple "Valeur non trouvée'

Klorane.
 
Re : Effectuer une recherche dans une colonne en macro

Bonjour, klorane, Staple1600 😀, le Forum,

...Par contre, que faut il ajouter dans le code ci dessus pour que SI la valeur B2 n'est pas trouvée dans la colonne E, un message box s'ouvre en indiquant par exemple "Valeur non trouvée'

En attendant le retour de Staple1600, une possibilité :

Code:
Sub Quoi_Où()
Dim quoi As Range: Set quoi = Range("B2")
Dim ou As Range: Set ou = Range("$E$1:$F$6")
[b7] = Application.VLookup(quoi, ou, 1, 0): [C7] = Application.VLookup(quoi, ou, 2, 0)
If IsError([b7]) Then
[b7:c7].ClearContents
MsgBox ("Valeur non trouvée !")
End If
End Sub

A bientôt 🙂
 
Re : Effectuer une recherche dans une colonne en macro

Bonsoir à tous

Merci à 00 d'avoir pris pris le relais 😉

EDITION:
Quelque fioritures d'autres esthétiques en autres 😉
Code VBA:
Sub Where_What()
Dim quoi As Range: Set quoi = Range("B2")
Dim ou As Range: Set ou = Range("$E$1:$F$6")
If IsError([B7]) Or IsEmpty([B2]) Then
MsgBox "Cellule B2 vide ou valeur non trouvée !", vbCritical, "ERREUR"
[B7:C7] = Empty
Else
[B7] = Application.VLookup(quoi, ou, 1, 0): [C7] = Application.VLookup(quoi, ou, 2, 0)
End If
End Sub
 
Dernière édition:
Re : Effectuer une recherche dans une colonne en macro

salut

pour le fun (dixit Staple😉) mais avec Find à la place de la formule réaménagée par DoubleZéro 😀.
Code:
Sub Es_tu_là()
  [B7:C7] = ""
  Dim R As Range
  Set R = Columns(5).Find([B2])
  If R Is Nothing Then
    MsgBox "Aucun résultat !", vbInformation, "Attention"
  Else
    [B7] = R:    [C7] = IIf(R.Offset(, 1) = "", "pas de correspondance", R.Offset(, 1))
  End If
End Sub
 

Pièces jointes

Dernière édition:
Re : Effectuer une recherche dans une colonne en macro

bonsoir
je me permets de m'insérer dans ce fil
débutant vba aussi les fichiers me permettent d'apprendre peu à peu

par rapport au fichier de SI

si la saisie est valable pour plusieurs prénoms
il ne reprend qu'un prénom

est- il possible d'afficher tous les prénoms avec la même saisie?

bonne soirée
urbanito1
 

Pièces jointes

Re : Effectuer une recherche dans une colonne en macro

re

@urbanito1 : dans ce cas je laisse tomber Find pour utiliser une simple boucle
Code:
Sub Es_tu_là()
  Range("B7:C" & Cells(Rows.Count, 2).End(xlUp).Row + 1) = ""
  Dim C As Range, L As Long
  L = 7
  Application.EnableEvents = False 'pas obligatoire
  For Each C In Columns(5).SpecialCells(2)
    If C = [B2] Then
      Cells(L, 2) = C
      Cells(L, 3) = IIf(C.Offset(, 1) = "", "pas de valeur correspondante", C.Offset(, 1))
      L = L + 1
    End If
  Next
  If [B7] = "" Then MsgBox "référence non trouvée", vbInformation, "Nota"
  Application.EnableEvents = True 'obligatoire si mise False
End Sub
 

Pièces jointes

- 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

Réponses
13
Affichages
517
Réponses
9
Affichages
559
Retour