VBA - Extraction suivant CONDITION et mise en ordre

Salut le Forum !!

A partir du Excel ci-joint:

1/ j'aimerai extraire toute les lignes possédant un X dans la colonne 13 de la Feuil "Bon" vers la Feuil 1

Maintenant dans la Feuil1:

2/ Toute les lignes portant la même réf Colonne 2, alors en supprimer une et additionner la Qté Colonne 4

3/ Colonne 9 "Symétrie", celle avec 1 - 1 ou 2 - 2 signifie que ce sont des symétries, du coup j'aimerai que ça ce soit plus qu'une seule ligne. Donc Réf s'écrirait (exemple du 1 - 1) 27011784/27011785 et la colonne 4 "Qté" devient alors 1+1.

4/ Le dernier point, que ces derniers soit ranger par épaisseur, colonne 7 "Dim." + colonne 6 "Matière". Entre chaque nouvelle matière et épaisseur sauter une ligne. Exemple du Excel parfois il y a de l'épaisseur 20.00 mm en S235 et d'autre épaisseur 20.00 mm en S355..

J'ai mis en Feuil2 le rendu final.

Pensez-vous que toute ces choses sont possible en VBA s'il vous plait ?

Merci d'avance pour vos réponses.

14docs.xlsm (56.25 Ko)

Je crois bien avoir posé une colle là !

bonjour

un simple TCD filtré sur X

à toi de faire une belle mise en page (est-ce vraiment utile ?

et d'ajouter des calculs

tu connais les TCD ?

note : supprime tout VBA, c'est inutile

amitiés

7copie-de-docs.xlsx (47.70 Ko)

Bonjour jmd,

Je connais un petit peu le tableau TCD mais ça note toujours par 1 - 1 2 - 2 etc ?

Parce que du coup j'aimerai vraiment la présentation de ma Feuil2..

Je me creuse la tete je suis arrivé a copier une ligne presque

 Sub test()

  Dim Lig     As Long
  Dim Col     As String
  Dim NbrLig  As Long
  Dim NumLig  As Long

  Sheets(Feuil6.Name).Activate ' feuille ou copier

  Col = "M"       ' colonne à tester
  NumLig = 5      'N° de la 1er ligne
  With Sheets(Feuil1.Name)  ' feuille source
  NbrLig = .Cells(65536, Col).End(xlUp).Row
  For Lig = 6 To NbrLig            
    If .Cells(Lig, Col).Value <> "" Then
      .Cells(Lig, Col).EntireRow.Copy
      NumLig = NumLig + 1
      Sheets(Feuil6.Name).Cells(NumLig, 8).Insert Shift:=xlDown

    End If
  Next
  End With
     End Sub

Malheureusement ça ne copie que une seule ligne de mon tableau et encore j'ai une erreur 1004 mes cellules ne sont pas de la même dimension que ma feuille ou je copie.

A l'aide SVP

TCD mais ça note toujours par 1 - 1 2 - 2 etc ?

que veux-tu dire ?

note : tu peux toujours modifier la présentation d'un TCD

Bonjour jmd,

Je me retrouve avec ce genre de tableau. (Feuil3)

Hors je souhaite avoir le tableau Feuil2.

Est-il possible d'avoir un TCD via un Bouton ?

J'essai de m'expliquer;

Je part de ce excel vide, a partir de la via un autre logiciel j'extrait bon nombre de ligne.

De la je crée ma Feuille (Bon), ici je met mes petites croix (X) suivant les critères de chaque lignes.

Puis une fois fini j'extrait toutes les lignes qui possède des croix colonnes M. Mais en les remodelant comme expliquer dans mon premier message.

Mais je ne suis pas sûr que le TCD puisse faire ceci ?

C'est à dire, les symétries les deux lignes possédant un 1 "fusionne" au niveau Réf et Qté pour donner: 27011784/27011785 et 1+1

6copie-de-docs.xlsx (47.03 Ko)

re

quand on a fait un beau fichier, contenant des données et des TCD et graphiques, on ne repart JAMAIS d'un fichier totalement vide

il suffit de réinjecter * les nouvelles données à la place des anciennes

et ensuite d'actualiser les TCD et les graphiques

ça prend 2 minutes

ne pas oublier de faire "enregistrer sous"

* soit par collage au clavier

soit par Power Query

du coup, pas besoin de VBA du tout

amitiés

Dans mon cas je suis toujours obliger de repartir d'un fichier vide... car je dois garder les traces de chaque fichier.

Ceci dit je vais passer par VBA. Le TCD ne pourra pas me donner le tableau que je souhaite et faire fusionner seulement des lignes..

J'ai d'ailleurs commencé, j'arrive a copier mes ligne qui possède le X dans la colonne M !!!

Sub CreationOnglets()

' copie des lignes suivant conditions

Dim Rw As Range
Dim Ligne As Long

' Sélectionne l'ensemble des données

Sheets(Feuil2.Name).Select
ActiveCell.SpecialCells(xlLastCell).Select
Range(Selection, Cells(1)).Select

' Boucle qui va passer sur chaque ligne de la sélection afin de déterminer si des lignes contiennent le mot voulu
' puis copie dans une nouvelle feuille

For Each Rw In Selection.Rows

Ligne = Rw.Row

If Rw.Cells(1, 13).Value = "X" Then
Rw.Copy Destination:=Worksheets(Feuil5.Name).Cells(Ligne, 1).EntireRow
End If

Next Rw

' Supression des lignes vierges dans la feuille récemment constituées

Sheets(Feuil5.Name).Activate

With ActiveSheet.UsedRange
derLi = .Row + .Rows.Count - 1
End With
Application.ScreenUpdating = False
For r = derLi To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r
End Sub

Je n'arrive pas à copier mes lignes à partir de la ligne 8 sur ma feuil5 savez-vous comment je peux faire s'il vous plait ?

Dans mon cas je suis toujours obliger de repartir d'un fichier vide... car je dois garder les traces de chaque fichier.

re

alors,

à condition que tu aies déjà fait un beau fichier,

je répète dans l'ordre des opérations à faire :

- enregistrer ton fichier sous "TaRéf.xlxs"

- "enregistrer sous" ton fichier sous la réf "TaRéf2.xlsx"

  • modifier les données (par collage ou autre moyen)
  • mettre à jour les TCD et les requêtes s'il y en a (ça prend 2 minutes)
  • enregistrer
recommencer à chaque changement de données : "enregistre sous" TaRéfTonNuméro".

tu gardes ainsi tous les fichiers passés.

tu vois que toutes les formules seront à jour, ainsi que les TCD, en 2 minutes

le tout sans jamais rien "recréer"

facile, rapide, hyper-simple

amitiés

Rechercher des sujets similaires à "vba extraction suivant condition mise ordre"