XL 2013 Copier suivant critères

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

yoda60

XLDnaute Nouveau
bonjour,

Je dispose de 3 colonnes critères dans le second onglet, je souhaiterais les noter en feuil1, si ils sont contenu dans la colonne 1.

Si il devait y avoir plusieurs critères à reporter dans une colonne , il faudrait les reporter avec un "; " en séparateur.

en espérant être clair.

cdt
 

Pièces jointes

Solution
Bonjour yoda60,

Voyez le fichier joint et la macro affectée au bouton :
VB:
Sub criteres()
Dim tablo, crit, ub&, i&, x$, j%, y$, k&, z$
With [Tableau1].Resize(, 4) 'tableau structuré
    tablo = .Value 'matrice, plus rapide
    crit = Sheets("critères").[A1].CurrentRegion.Resize(, 3) 'matrice, plus rapide
    ub = UBound(crit)
    For i = 1 To UBound(tablo)
        x = Replace(Replace(tablo(i, 1), " ", ""), "+", ";") & ";"
        For j = 1 To 3
            y = ""
            For k = 2 To ub
                z = crit(k, j)
                If z = "" Then Exit For
                If InStr(x, z & ";") Then y = y & ";" & z
            Next k
            If y = "" Then tablo(i, j + 1) = "" Else tablo(i, j + 1) = Mid(y, 2)
    Next j, i...
Bonjour yoda60,

Voyez le fichier joint et la macro affectée au bouton :
VB:
Sub criteres()
Dim tablo, crit, ub&, i&, x$, j%, y$, k&, z$
With [Tableau1].Resize(, 4) 'tableau structuré
    tablo = .Value 'matrice, plus rapide
    crit = Sheets("critères").[A1].CurrentRegion.Resize(, 3) 'matrice, plus rapide
    ub = UBound(crit)
    For i = 1 To UBound(tablo)
        x = Replace(Replace(tablo(i, 1), " ", ""), "+", ";") & ";"
        For j = 1 To 3
            y = ""
            For k = 2 To ub
                z = crit(k, j)
                If z = "" Then Exit For
                If InStr(x, z & ";") Then y = y & ";" & z
            Next k
            If y = "" Then tablo(i, j + 1) = "" Else tablo(i, j + 1) = Mid(y, 2)
    Next j, i
    '---restitution---
    .Value = tablo
End With
End Sub
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

Discussions similaires

Réponses
3
Affichages
161
Réponses
2
Affichages
133
Réponses
40
Affichages
3 K
Retour