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

Macro ou formule de recherche de lignes.

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

J

JJ1

Guest
Bonsoir,

Dans mon fichier, je souhaiterais retrouver les lignes successives (mises en colonnes à partir de la colonne I ), où est inclus le contenu (3 nombres) des lignes de la base B dans les lignes de la base A ( donc parmi 5 nombres).
je joins un exemple court.
Merci de votre aide.
Bonne soirée
 

Pièces jointes

Re : Macro ou formule de recherche de lignes.

Bonsoir,
à tester :
Code:
Sub test()
Dim BaseA As Range, BaseB As Range, i&, j&, Nb&, temp
With Sheets("feuil1")
Set BaseA = .Range("A1:E" & .Range("A" & Rows.Count).End(xlUp).Row)
Set BaseB = .Range("F1:H" & .Range("F" & Rows.Count).End(xlUp).Row)
    For i = 1 To BaseB.Rows.Count
    temp = ""
        For j = 1 To BaseA.Rows.Count
            Nb = .Evaluate("SUM(COUNTIF(" & BaseA.Rows(j).Address & "," & BaseB.Rows(i).Address & "))")
            If Nb = 3 Then
                temp = temp & " " & j
                Dim tabl()
                ReDim Preserve tabl(1 To BaseA.Rows.Count)
                tabl(i) = temp
            End If
        Next j
    Next i
    .[I1].Resize(BaseA.Rows.Count) = Application.Transpose(tabl)
 End With
End Sub
A+
 
Dernière édition:
Re : Macro ou formule de recherche de lignes.

Re
autre possibilité si tu veux les numéros de lignes dans des cellules différentes :
Code:
Sub test2()
Dim BaseA As Range, BaseB As Range, i&, j&, k&, Nb&, temp
With Sheets("feuil1")
Set BaseA = .Range("A1:E" & .Range("A" & Rows.Count).End(xlUp).Row)
Set BaseB = .Range("F1:H" & .Range("F" & Rows.Count).End(xlUp).Row)
    For i = 1 To BaseB.Rows.Count
        k = 1
        For j = 1 To BaseA.Rows.Count
        
            Nb = .Evaluate("SUM(COUNTIF(" & BaseA.Rows(j).Address & "," & BaseB.Rows(i).Address & "))")
            If Nb = 3 Then
                Dim tabl()
                ReDim Preserve tabl(1 To BaseA.Rows.Count, 1 To BaseA.Columns.Count)
                tabl(i, k) = j: k = k + 1
            End If
        Next j
    Next i
    .[I1].Resize(UBound(tabl), UBound(tabl, 2)) = tabl
 End With
End Sub
 
Dernière édition:
Re : Macro ou formule de recherche de lignes.

Bonjour David, le Forum

Merci pour ton code, je testerai ce soir sur le vrai tableau.(pas mal de lignes!)
Je te dirai.
Merci encore et bon AM à tous.
 
Re : Macro ou formule de recherche de lignes.

Bonsoir David, le Forum
J'ai testé les 2 macros, un message "l'indice n'appartient pas à la sélection" avec un debbogage
pour la 1ère macro à:
tabl(i)=temp
pour la 2ème macro à:
tabl(i,k)=j
Les plages sont A1:E566 et F1:H1330.
As-tu une idée du problème?
merci
(il n'y a rien d'urgent)
Bonne soirée
 
Re : Macro ou formule de recherche de lignes.

Re
As-tu une idée du problème?
Sans fichier, aucune.
Fais fonctionner la macro en pas à pas et regarde quelles sont les valeurs de i, k et j à l'endroit où cela plante et réajuste au besoin.
Tout ce que je sais c'est que sur ton fichier exemple cela fonctionne (cf. fichier).
A+
 

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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
19
Affichages
767
Réponses
5
Affichages
701
Réponses
19
Affichages
869
Réponses
16
Affichages
604
Réponses
6
Affichages
294
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…