Microsoft 365 recherche d'un élément dans une plage

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

Maxou60

XLDnaute Nouveau
J'ai une base de données....Je souhaite faire correspondre la colonne cat au reste du document. En Sachant que chaque catégorie dans la colonne xxx correspond à un élément de la colonne xxx.

En bref je souhaite compléter la colonne cat avec l’élément correspondant dans tout le document

Je vous remercie

Amicalement
 

Pièces jointes

J'ai une base de données....Je souhaite faire correspondre la colonne cat au reste du document. En Sachant que chaque catégorie dans la colonne xxx correspond à un élément de la colonne xxx.

En bref je souhaite compléter la colonne cat avec l’élément correspondant dans tout le document

Je vous remercie

Amicalement
Bonjour @Maxou60 , @Staple1600 , @alain.pierrephie

@Maxou60 : Bien que nouveau, tu as 22 messages à ton actif. Tu devrais donc connaitre un minimum de bonne pratique de ce forum, à savoir un petit "Bonjour/Bonsoir" en liminaire de tes messages. Je partage l'avis de nos 2 amis.

Je ne sais pas si j'ai bien compris ton problème. Je te propose le code ci-dessous à copier/coller dans un module standard et enregistrer le fichier au format xlsm, puis exécuter le code.
VB:
Option Explicit

Sub completer_Cat()
    Dim dl As Long, d As Object, i As Long, cle, Rng As Range, c As Range
    Set d = CreateObject("scripting.dictionary")
    With Feuil1    'à adapter
        If Feuil1.AutoFilterMode = True Then Feuil1.AutoFilter.ShowAllData
        dl = .Range("A" & Rows.Count).End(xlUp).Row
        Set Rng = .Range("A2:D" & dl)

        For i = 2 To dl
            If .Range("B" & i).Offset(0, 2) <> "" Then
                d(.Range("B" & i)) = .Range("B" & i).Offset(0, 2)
            End If
        Next i

        If d.Count > 0 Then
            For Each cle In d.keys
                Rng.AutoFilter Field:=2, Criteria1:=cle
                For Each c In Rng.SpecialCells(xlCellTypeVisible)
                    If Cells(c.Row, 4) = "" Then Cells(c.Row, 4).Value = d.Item(cle)
                Next c
            Next cle
        End If
        Rng.AutoFilter Field:=2
    End With

    MsgBox "Traitement terminé!", vbInformation + vbOKOnly, "FIN TRAITEMENT"
    Set Rng = Nothing: Set d = Nothing
End Sub

Bon week-end.
 
- 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
10
Affichages
161
Réponses
40
Affichages
1 K
Réponses
15
Affichages
658
Réponses
6
Affichages
206
Retour