Extraire des lignes

matthieu2701

XLDnaute Occasionnel
Bonjour à tous,

Je viens vers vous car je souhaite extraire, sur une nouvelle feuille, les lignes qui contiennent une donnée d'une colonne.

Dans mon fichier, j'aimerais extraire les lignes dont la colonne P contient "Fabricant1" dans une feuille et "Fabricant2" + "Fabricant3" dans une autre feuille.

Je vous joint le fichier.

Merci par avance
 

Pièces jointes

  • Test.xlsm
    595.5 KB · Affichages: 10

matthieu2701

XLDnaute Occasionnel
Re,

Par VBA avec le texte d'une macro dans un module :
VB:
Sub ventiler()
Dim ts As ListObject, i&, j&, i1&, i2&, n&, t, t1, t2
   Application.ScreenUpdating = False
   Set ts = Worksheets("BDD").Range("a1").ListObject: n = ts.ListColumns.Count
   On Error Resume Next
   i = 0: i = Worksheets("Fabricant1").Range("a1").CurrentRegion.Clear
   If i = 0 Then Worksheets.Add: ActiveSheet.Name = "Fabricant1"
   Worksheets("Fabricant1").Columns(1).Resize(, n).Clear
   i = 0: i = Worksheets("Fabricant-autres").Index
   On Error GoTo 0
   If i = 0 Then Worksheets.Add: ActiveSheet.Name = "Fabricant-autres"
   Worksheets("Fabricant-autres").Columns(1).Resize(, n).Clear
   t = ts.Range: t1 = ts.Range: t2 = ts.Range: i1 = 1: i2 = 1
   For i = 2 To UBound(t)
      If t(i, 16) = "Fabricant1" Then
         i1 = i1 + 1
         For j = 1 To n: t1(i1, j) = t(i, j): Next
      Else
         i2 = i2 + 1
         For j = 1 To n: t2(i2, j) = t(i, j): Next
      End If
   Next i
    Worksheets("Fabricant1").Range("a1").Resize(i1, n) = t1
    Worksheets("Fabricant-autres").Range("a1").Resize(i2, n) = t2
End Sub
Merci. Je teste
 

matthieu2701

XLDnaute Occasionnel
Re,

Une version qui présente les résultats sous forme de tableaux structurés de noms "tsFab1" et "tsFabN".
VB:
Sub ventiler()
Dim ts As ListObject, i&, j&, i1&, i2&, n&, t, t1, t2
   Application.ScreenUpdating = False
   Set ts = Worksheets("BDD").Range("a1").ListObject: n = ts.ListColumns.Count
   On Error Resume Next
   i = 0: i = Worksheets("Fabricant1").Range("a1").CurrentRegion.Clear
   If i = 0 Then Worksheets.Add: ActiveSheet.Name = "Fabricant1"
   Worksheets("Fabricant1").Columns(1).Resize(, n).Clear
   i = 0: i = Worksheets("Fabricant-autres").Index
   On Error GoTo 0
   If i = 0 Then Worksheets.Add: ActiveSheet.Name = "Fabricant-autres"
   Worksheets("Fabricant-autres").Columns(1).Resize(, n).Clear
   t = ts.Range: t1 = ts.Range: t2 = ts.Range: i1 = 1: i2 = 1
   For i = 2 To UBound(t)
      If t(i, 16) = "Fabricant1" Then
         i1 = i1 + 1
         For j = 1 To n: t1(i1, j) = t(i, j): Next
      Else
         i2 = i2 + 1
         For j = 1 To n: t2(i2, j) = t(i, j): Next
      End If
   Next i
   With Worksheets("Fabricant1")
      .Range("a1").Resize(i1, n) = t1
      .ListObjects.Add(xlSrcRange, .Range("a1").Resize(i1, n), , xlYes).Name = "tsFab1"
      .ListObjects("tsFab1").TableStyle = "TableStyleMedium7"
   End With
   With Worksheets("Fabricant-autres")
      .Range("a1").Resize(i2, n) = t2
      .ListObjects.Add(xlSrcRange, .Range("a1").Resize(i2, n), , xlYes).Name = "tsFabN"
      .ListObjects("tsFabN").TableStyle = "TableStyleMedium5"
   End With
End Sub
Bonjour @mapomme ,

Cela fonctionne parfaitement. Merci

Est-il possible de rajouter une colonne, dans les nouvelles feuilles, avec un commentaire après la dernière colonne qui sera différent si c'est "Fabricant1" ou "Fabricant2et3" ?

Ensuite, j'aimerais compléter la "Feuil3" avec :

- en colonne "A" : le texte de la colonne "E" de la feuille des feuilles "Fabricant 1,2et3"

- en colonne "I" : le texte de la colonne "Q" de la feuille des feuilles "Fabricant 1,2et3"

- en colonne "K" : le texte de la colonne "R" de la feuille des feuilles "Fabricant 1,2et3"

- en colonne "M" : le texte de la colonne "K" de la feuille des feuilles "Fabricant 1,2et3"

- en colonne "P" : le texte de la colonne qui sera créé après la dernière colonne de la feuille des feuilles "Fabricant 1,2et3"

Merci par avance

J'espère que j'ai été assez clair.

Merci par avance.
 

Pièces jointes

  • Test - Copie.xlsm
    603.2 KB · Affichages: 2

matthieu2701

XLDnaute Occasionnel
Bonjour @mapomme ,

Cela fonctionne parfaitement. Merci

Est-il possible de rajouter une colonne, dans les nouvelles feuilles, avec un commentaire après la dernière colonne qui sera différent si c'est "Fabricant1" ou "Fabricant2et3" ?

Ensuite, j'aimerais compléter la "Feuil3" avec :

- en colonne "A" : le texte de la colonne "E" de la feuille des feuilles "Fabricant 1,2et3"

- en colonne "I" : le texte de la colonne "Q" de la feuille des feuilles "Fabricant 1,2et3"

- en colonne "K" : le texte de la colonne "R" de la feuille des feuilles "Fabricant 1,2et3"

- en colonne "M" : le texte de la colonne "K" de la feuille des feuilles "Fabricant 1,2et3"

- en colonne "P" : le texte de la colonne qui sera créé après la dernière colonne de la feuille des feuilles "Fabricant 1,2et3"

Merci par avance

J'espère que j'ai été assez clair.

Merci par avance.
Bonjour @mapomme,

As-tu eu le temps de te pencher sur ma demande ? Merci par avance
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

D'accord. J'ai modifié le code dans module1 pour tenir compte de ta demande.

Tout en haut du code, il y a deux lignes commençant par "Const".
Ce sont les commentaires par défaut à mettre dans chaque colonne commentaire.
Pour ne rien mettre dans une colonne de commentaire, mettre la constante à vide :
Exemple : Const CommentDefautFab1 = ""
 

Pièces jointes

  • matthieu2701- fabricant1 et les autres- v10.xlsm
    603.6 KB · Affichages: 5

job75

XLDnaute Barbatruc
Bonsoir à tous,

Passant par ici je tombe sur ceci :
Non ce n’est pas ça. Je sais qu’il faut activer. Après avoir activer j’ai un message rouge m’indiquant : contenu bloqué : les macros ont été désactivées car la source de ce fichier n’est pas approuvée
Clic droit sur l'icône du fichier => Propriétés puis cocher la case "Débloquer".

En tout cas chez moi sur Win 11 Excel 2019.

A+
 

matthieu2701

XLDnaute Occasionnel
Re,

D'accord. J'ai modifié le code dans module1 pour tenir compte de ta demande.

Tout en haut du code, il y a deux lignes commençant par "Const".
Ce sont les commentaires par défaut à mettre dans chaque colonne commentaire.
Pour ne rien mettre dans une colonne de commentaire, mettre la constante à vide :
Exemple : Const CommentDefautFab1 = ""
Merci du travail et de ton retour.

J'ai pensé à un autre moyen de compléter la feuille "Feuil3" mais je n'ai pas réussi à le faire.

J'ai ajouté les commentaires normés dans la feuille "BDD" à la colonne "AB" à l'aide d'une formule.

Ensuite, j'aimerais dispatcher les données en 2 feuilles.

Dans "Feuil3", je souhaite copier certaines données dont la colonne "L" de "BDD" est égale à "GAINE", "ESCALIER" et "ACCES".

Après cela, il faut :

- copier en colonne "A" de "Feuil3", le texte de la colonne "E" de la feuille "BDD"

- en colonne "I" de "Feuil3", le texte de la colonne "Q" de la feuille "BDD"

- en colonne "K" de "Feuil3", le texte de la colonne "R" de la feuille "BDD"

- en colonne "M" de de "Feuil3", le texte de la colonne "K" de la feuille "BDD"

- en colonne "P" de "Feuil3", le texte de la colonne "AB" de la feuille "BDD"

Dans la feuille "Non accessible", je souhaite un tableau avec toutes les lignes dont la colonne "L" de la feuille "BDD" correspond à "AUTRE","LOCAL","SPECIAL" et "CAVE".

J'espère que c'est plus clair.

Merci par avance @mapomme
 

Pièces jointes

  • matthieu2701- fabricant1 et les autres- v10.xlsm
    641.8 KB · Affichages: 4

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @patty58 ;),
Sa demande finale n'est pas claire.. Donc, bon courage à tous pour les devinettes
J'avoue que je m'y perds aussi.

Au départ, on extrait selon Fabricant1 et les autres fabricants selon un format donné.

Ensuite on rajoute une colonne aux extractions.

Ensuite on voit la feuille source qui a été modifiée pour y rajouter des commentaires.

Puis on voit apparaitre une feuille "Feuil3" et une feuille "Non accessible" dont les critères de filtre n'ont rien à voir avec le champ Fabricant et dont les champs n'ont rien à voir avec la première demande.

Puis quoi encore ?😜

1701282216906.png
 
Dernière édition:

matthieu2701

XLDnaute Occasionnel
Bonsoir @patty58 ;),

J'avoue que je m'y perds aussi.

Au départ, on extrait selon Fabricant1 et les autres fabricants selon un format donné.

Ensuite on rajoute une colonne aux extractions.

Ensuite on voit la feuille source qui a été modifiée pour y rajouter des commentaires.

Puis on voit apparaitre une feuille "Feuil3" et une feuille "Non accessible" dont les critères de filtre n'ont rien à voir avec le champ Fabricant et dont les champs n'ont rien à voir avec la première demande.

Puis quoi encore ?

Regarde la pièce jointe 1185008
Oui en effet désolé d’être Revenu sur ma demande initial. Au départ je voulais trier par fabricant mais finalement je me suis rendu compte que je n’en ai pas besoin pour arriver à mon résultat final.

La séparation des fabricants me permettais de mettre un commentaire type par fabricant mais c’était une mauvaise idée de le faire comme cela car je pouvais le faire directement dans le feuille BDD.

Ce que j’ai vraiment besoin c’est ce que j’ai évoqué dans ma dernière demande.

Désolé encore d’avoir fait ma demande trop rapidement 😞
 

Statistiques des forums

Discussions
312 207
Messages
2 086 250
Membres
103 165
dernier inscrit
thithithi78