Copie de lignes suivant condition

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

T

TOM_@

Guest
Bonjour.

Du fait de mes faibles compétences en VB, je souhaite de l'aide sur le développement suivant :

Mon but est de recopier toutes les lignes de la feuille_1 dans la feuille_2 à condition que la colonne L "Pièce de tôlerie" affiche oui.
Ensuite : supprimer la colonne L "Pièce de commerce"

Mon but est de recopier toutes les lignes de la feuille_1 dans la feuille_2 à condition que la colonne N "Pièce du Commerce" affiche oui.
Ensuite : supprimer la colonne L "Pièce de tôlerie" & M "Pliage"

Je vous joins le fichier final.

Merci d'avance.
 

Pièces jointes

Dernière modification par un modérateur:
Re : Copie de lignes suivant condition

Bonjour Tom_@
Juste pour te dire que ton fichier est un fichier partagé, qu'il est en situation "occupée" et qu'il m'a planté Excel...
Merci de le changer pour une version plus "propre"
Cordialement
 
Re : Copie de lignes suivant condition

Re
Ton fichier est bon, merci,
Une proposition à mettre dans un module standart:
VB:
Sub test()
Dim i&
With Sheets("Feuil1")
For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
    If .Cells(i, 12).Value = "OUI" Then
        .Range(.Cells(i, 1), .Cells(i, 11)).Copy _
        Sheets("Feuil2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
    End If
Next i
End With
End Sub
Cordialement
 
Re : Copie de lignes suivant condition

Cela correspond mais, l'en-tête de tableau n'est pas recopié.

Pour des questions de faciliter, ne serait-il pas plus simple de copier la feuille_1 et la coller en feuille_2 &feuille_3.
Grâce à cela la dimension couleur et bordure du tableau sont conservées.

Ensuite sur la feuille_2 supprimer toutes les lignes ou les cellules "Pièces de tôlerie" sont égales à NON.
sur la feuille_3 supprimer toutes les lignes ou les cellules "Pièces de commerce" sont égales à NON.

Est-ce que le code n'est pas plus simple ???
 
Re : Copie de lignes suivant condition

Re
Il n'était pas question, dans la demande, de créer les feuilles, ni feuille 2 ni feuille 3.
Pourrais tu expliquer exactement, ce que tu as et ce que tu veux.
Le traitement des feuilles 2 et 3 est il différent ?
Faut il créer les feuilles à chaque traitement ou peuvent elles exister au préalable ?
Quand à "simplifier le code", je pense que la proposition n'éest pas si complexxe....
A te relire
Cordialement
 
Re : Copie de lignes suivant condition

Mon souhait est d'avoir en feuille2 le tableau de la feuille1 à l'identique (bordure, couleur et dimension de colonne et ligne), mais seulement les lignes où la colonne "pièce de tôlerie" affiche oui, suppression de la dernière colonne "pièce du commerce"
Et aussi d'avoir en feuille3 le tableau de la feuille1 à l'identique (bordure, couleur et dimension de colonne et ligne), mais seulement les lignes où la colonne "pièce de commerce" affiche oui, suppression des colonnes "pièce de tôlerie" & "pliage"

C’est pourquoi je pense qu'il serait plus simple de faire une copie de la feuille1 sur feuil 2 & 3, puis sur la feuille_2 supprimer toutes les lignes ou les cellules "Pièces de tôlerie" sont égales à NON. (avec recherche verticale) et
sur la feuille_3 supprimer toutes les lignes ou les cellules "Pièces de commerce" sont égales à NON. (avec recherche verticale)

Mais probable que mon idée n'est pas la plus simple, je joins un fichier du résultat souhaité.
Fichier d'origine = Nomenclature (présent sur le premier post)
Fichier final = Nomenclature final (téléchargeable sous ce message)
 

Pièces jointes

Re : Copie de lignes suivant condition

Je suis parti sur ce code :
VB:
Sub test()

'copie de la feuille nomenclature sur les feuilles suivantes.
Sheets("Feuil1").Select
    Cells.Select
    Selection.Copy
    Sheets("Feuil2").Select
    ActiveSheet.Paste
    Sheets("Feuil3").Select
    Range("A1").Select
    ActiveSheet.Paste


'Recherche des données et efface les données non utilessur les 2 autres onglets : Tôlerie & Commerce
'Tôlerie

Dim i&
With Sheets("Feuil2")
For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
    If .Cells(i, 12).Value = "NON" Then
        If .Cells(i, 12).Value = "" Then
        Exit For
        Else
        .Range(.Cells(i, 1), .Cells(i, 14)).Delete
        End If
    End If
Next i
End With

'Commerce
Dim j&
With Sheets("Feuil3")
For j = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
    If .Cells(j, 14).Value = "NON" Then
        If .Cells(j, 14).Value = "" Then
        Exit For
        Else
        .Range(.Cells(j, 1), .Cells(j, 14)).Delete
        End If
    End If
Next j
End With

End Sub

Tout commence correctement, mais le tableau s'efface complètement,
je pense que ce bout de code (je ne suis pas sur car je ne le comprends pas totalement) pose problème :
VB:
For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
 
Re : Copie de lignes suivant condition

Re
Voici la demande traduite en VBA.
Pas certain que l'on puisse considérer le code comme "plus simple". 😀
VB:
Sub test()
Dim i&, j&, T As Variant
T = Array("Pièce de tôlerie", "Pièce du commerce")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
For i = LBound(T) To UBound(T)
    Sheets(T(i)).Delete
    Sheets("Nomenclature").Copy after:=Sheets(Sheets.Count)
    With ActiveSheet
        .Name = T(i)
        Select Case i
            Case 0
                For j = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
                    If .Cells(j, 12).Value < > "OUI" Then .Rows(j).Delete
                Next j
                .Columns("N:N").Delete
            Case 1
                For j = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
                    If .Cells(j, 14).Value < > "OUI" Then .Rows(j).Delete
                Next j
                .Columns("L:M").Delete
        End Select
    End With
Next i
Sheets("Nomenclature").Activate
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Cordialement
 
Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
696
Réponses
3
Affichages
568
Retour