XL 2016 Utiliser like avec une variable

croco40

XLDnaute Occasionnel
Bonjour à tous et merci pour vos aides multiples.
J'ai un fichier sur lequel Feuil(1), plusieurs références (colonne A) sont séparées par des espaces et des informations colonne B, C et D comme dans le tableau du haut fichier joint.
Sur le Feuil(2), j'ai en colonne A la liste des références, et je voudrais récupérer les informations de colonnes B,C & D comme dans le tableau du bas.

J'ai tenté avec Like comme dans la macro ci-dessous mais ça ne fonctionne pas.

For i=2 to 699 (oui mon fichier à beaucoup de lignes)
myvar1=sheets(2).cells(i,1).value
for j = 2 to 321
myvar2=sheets(1).cells(j,1).value

if myvar2 like myvar1 then
recopie des colonne (ça je sais faire)

end if
next j
next i

Par avance merci
Suerte
Croco
PS: Coucouc special à @pierre-jean
 

Pièces jointes

  • tria.pdf
    12.8 KB · Affichages: 19

job75

XLDnaute Barbatruc
Bonjour croco40, fanfan38,

Ce n'est pas Like mais Split qu'il faut utiliser, voyez ce fichier et la macro :
VB:
Private Sub Worksheet_Activate()
Dim ncol%, tablo, i&, x$, s, j%, n&, k%
ncol = 4 'à adapter
tablo = Sheets("Feuil1").UsedRange.Resize(, ncol) 'matrice, plus rapide
ReDim resu(1 To Rows.Count, 1 To ncol)
For i = 1 To UBound(tablo)
    x = tablo(i, 1)
    If x <> "" Then
        s = Split(tablo(i, 1))
        For j = 0 To UBound(s)
            n = n + 1
            resu(n, 1) = s(j)
            For k = 2 To ncol
                resu(n, k) = tablo(i, k)
        Next k, j
    End If
Next i
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A1] '1ère cellule de destination, à adapter
    If n Then .Resize(n, ncol) = resu
    .Offset(n).Resize(Rows.Count - n - .Row + 1, ncol).ClearContents 'RAZ en dessous
End With
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
Elle est placée dans le code de Feuil2 et se déclenche quand on active la feuille.

Edit : pour tester j'ai recopié la plage A2: D4 sur 30 000 lignes.

La macro s'exécute alors en 0,48 seconde, c'est rapide car elle utilise des tableaux VBA.

A+
 

Pièces jointes

  • Classeur(1).xlsm
    18.2 KB · Affichages: 4
Dernière édition:

croco40

XLDnaute Occasionnel
Bonjour Fanfan38,
oui je sais, mais je n'ai pas excel sur ce poste et je suis en teletravail

Bonjour Job75,

Bon j'ai fait celle de Fanfan38, pour deux raisons :
1) comme internet a planté, je n'ai pas vu la réponse de Job75
2) je ne maitrise pas du tout les tableaux, il faut vraiment que je m'y mette car je sais que le temps de travail est divisé, il me semble par 100

En tout cas merci à tous les deux pour la rapidité de vos réponses.
A bientôt
Et prenez soins de vous et de vos proches.*
Suerte
Croco
 

Discussions similaires

Réponses
11
Affichages
236
Réponses
4
Affichages
165

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof