Microsoft 365 EXCEL Rechercher dans l'ensemble d'une colonne une cellule comportant une valeur et la recopier

VH ORLEA

XLDnaute Nouveau
Bonjour, sous EXCEL, je souhaite trouver une formule qui me permette de rechercher dans une colonne entière une cellule comportant une valeur
et si elle existe de copier cette valeur dans une cellule
Je ne suis peut être pas très clair, désolé
Je vous joint un exemple
Merci de votre aide
Vincent
1679036650256.png
 

Pièces jointes

  • 1679033316596.png
    1679033316596.png
    3.2 KB · Affichages: 20

xUpsilon

XLDnaute Accro
Bonjour Vincent, Wayki,

Pas sûr que la solution proposée ci-dessus colle au besoin : si on cherche 119000 dans la colonne 1, INDEX(EQUIV()) va renvoyer 0.
En fait, index equiv tel qu'il est utilisé cherche une correspondance exacte de la valeur, sauf que 119000 et "119000 0" ne sont pas la même valeur.

Ma proposition (avec la valeur recherchée en B1), à valider matriciellement (ctrl+shift+entrée) :
Code:
=INDEX(A:A;LIGNE(A:A)*(A:A=B1&"*"))
Seul inconvénient, cette formule s'arrête à la première valeur trouvée. Donc si on cherche 165000 et qu'il y a dans la base 165000 0 et 165000 1, on va s'arrêter à la première valeur trouvée.

Bonne journée,
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour VH ORLEA, Bonjour le fil, Bonjour le Forum :)

Je pense que ce code pourrait vous aider :
VB:
Sub Recherche()
    nom = Application.InputBox("Saisir texte/chiffre(s) à trouver :", "Rechercher")
    If VarType(nom) = vbBoolean Then 'Touche Annuler
    nom = CStr(nom)
    Exit Sub
    End If

    If nom = "" Then
        Application.EnableEvents = False
        MsgBox ("Faudrait p'être saisir le(s) texte/chiffre(s) à trouver !")
        [a3].Select
        Application.EnableEvents = True
        Exit Sub
    End If
 
    Application.EnableEvents = False
    q = ActiveSheet.Index
 
    For q = q To ActiveSheet.Index + Sheets.Count - 1
        K = (q - 1) Mod (Sheets.Count) + 1
        With Sheets(K).UsedRange
            Application.ScreenUpdating = False
 
            Set C = .Find(nom, LookAt:=xlPart)   'LookAt:=xlpart dans cellule - LookAt:=xlWhole) 'cellule entière
            '[a1].Activate
            If Not C Is Nothing Then
                firstAddress = C.Address
                Do
                    On Error Resume Next
 
                    Sheets(K).Select
                    C.Activate
                    Application.ScreenUpdating = True
                    ActiveWindow.ScrollRow = Selection.Row
                    Rep = MsgBox("A trouver : " & nom & Chr(10) & "- OK dans  " & ActiveSheet.Name & Chr(10) & "- Colonne " & Split(C.Address, "$")(1) & Chr(10) & "- ligne       " & C.Row & Chr(10) & Chr(10) & "Continuer la recherche ?", 4 + 32, "Résultat")
                 
                    If Rep = vbNo Then
                        Application.EnableEvents = True
                        Exit Sub
                    End If
             
                    Application.ScreenUpdating = True
                    Set C = .FindNext(C)
             
                Loop While Not C Is Nothing And C.Address <> firstAddress
            End If
        End With
    Next q
 
            MsgBox "Ben NON : y'a pas ou y'a plus !"
                Application.EnableEvents = False
                [a3].Select
                Application.EnableEvents = True
End Sub
Ce code vous permet de rechercher dans tout le classeur.
a mettre dans un module...
Il suffit de faire un copier/coller après avoir trouvé la valeur.
:)
A
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 153
Messages
2 085 802
Membres
102 981
dernier inscrit
fred02v