Microsoft 365 Demande d'aide sur des extractions de lignes

  • Initiateur de la discussion Initiateur de la discussion agayet
  • Date de début Date de début
  • Mots-clés Mots-clés
    help

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 !

agayet

XLDnaute Nouveau
Bonjour a tous,

Voila mon problème,

Je dispose d'un fichier contenant une base de données et je voudrais isoler certaines lignes par rapport a une liste de valeurs.

Mon problème est que dans la base de donnée, les valeurs que je recherche sont présentes plusieurs fois dans la même colonne et je dois récupérer chacune des ces lignes.

J'ai tenté une formule d' INDEX qui fonctionne ligne a ligne. J'ai plus de 500 lignes a faire. Je voudrais savoir si il y a quelqu'un qui pourrait m'aider à simplifier cette action.

Je n'ai pas de connaissances en VBA.
Je vous joins un échantillon de ce fichier

Pour l'explication, j'aurais besoin d'extraire chaque ligne de l'onglet ERP qui contient la même valeur dans la colonne ID_ART_SOURCE que dans l'onglet REFERENCES A INTEGRER en gardant l'ordre de la colonne RANG de l'onglet ERP.

Si j'arrive a obtenir cette sélection de lignes cela me sauverais ! ! : )

D'avance merci a ceux qui répondrons
 

Pièces jointes

WOW !

Merci pour la rapidité de réponse et d'action !
Cela fonctionne parfaitement pour le fichier d'exemple, Je vais tenter d'intégrer la macro a mon fichier d'origine.

Merci aussi pour les explications détaillées a l'intérieur du code VBA. J'en apprendrais un peu comme ca : )
Je viens de faire la bascule vers mon fichier original.

Je me retrouve face a une erreur au moment d'exécuter la macro " Erreur d'exécution '6' Dépassement de capacité

Qui me renvoi au débogage sur la ligne en rouge :

Sub Extraire()

Dim TabERP() As Variant
Dim TabFinal() As Variant

Dim TabRef() As Variant
Dim LastLine As Integer
Dim lig As Integer

Application.ScreenUpdating = False 'on désactive le refresh
With Sheets("References a integrer")
LastLine = .Range("A" & .Rows.Count).End(xlUp).Row 'numéro de ligne de la dernière cellule non vide de la colonne A
TabRef = .Range("A1:A" & LastLine).Value 'on récupère dans un tableau VBA les références à chercher
End With

With Sheets("ERP")
LastLine = .Range("A" & .Rows.Count).End(xlUp).Row 'numéro de ligne de la dernière cellule non vide de la colonne A
TabERP = .Range("A1:BC" & LastLine).Value 'on récupère dans un tableau VBA les références à chercher
NbCol = UBound(TabERP, 2) 'nombre de colonnes
TabEntete = .Range("A1:BC1").Value 'on récupère la ligne d'entete
End With

lig = 0 'initialisation
'à chaque ligne de l'ERP, on vérifie la présence de toutes les ref dans la colonne B
For i = LBound(TabERP, 1) + 1 To UBound(TabERP, 1) 'pour chaque ligne de l'ERP
For ref = LBound(TabRef, 1) + 1 To UBound(TabRef, 1) 'pour chaque ref
If TabERP(i, 2) = TabRef(ref, 1) Then 'si la ref est en colonne B
'on ajoute la ligne
lig = lig + 1
ReDim Preserve TabFinal(1 To NbCol, lig)
For j = 1 To NbCol 'on enregistre la ligne dans le tablau final
TabFinal(j, lig) = TabERP(i, j)
Next j
End If
Next ref
Next i

With Sheets("Feuil3") 'dans la feuille 3
.Cells.Clear 'on efface tout
.Range("A1").Resize(UBound(TabFinal, 2), UBound(TabFinal, 1)) = Application.WorksheetFunction.Transpose(TabFinal) 'on colle le tableau final
.Range("A1:BC1") = TabEntete 'on remet les entetes
End With
Application.ScreenUpdating = True
End Sub


Pour info, l'onglet ERP compte maintenant presque 161 000 lignes. peut etre en rapport pour le dépassement de capacité ?
 
- 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
5
Affichages
360
Retour