Copie de ligne d'une feuille à une autre avec condition

Bonjour,

Je viens sur le forum par un petit problème.

Je suis pas doué sur la macro, j'en ai jamais fait, mais je ne trouve pas de solution intéressante avec les formules:

Je cherche à copier une ligne dans d'une feuille à une autre en automatique avec une condition.

J'ai une feuille qui sera remplit au fur et à mesure (feuill1)

Puis j'ai les feuille suivantes qui doivent récupérer les données si elles sont concernées (1 feuille par ligne).

Dans mon fichier, j'ai des noms (sécurité, caisse, ...)

Les colonnes "Secteur" et " Rayon" sont les éléments qui me permettent de classer les évênements dans les feuilles correspondants.

Je vous laisse regarder mon début... les images parlent plus que les mots.

Je cherche à copier une ligne d'une feuille à une autre avec une condition (feuille "Sécurité" lorsque rayon="Sécurité", fauille "EM" si Secteur "EM", ...)

Merci de votre aide.

Edouard

Bonjour

En adaptant le Code donné par Yvouille (et heureusement pour moi, bien documenté) sur un des sujets se trouvant sous ton post

https://forum.excel-pratique.com/excel/copier-une-ligne-sous-condition-dans-une-autre-feuille-t31910.html

aprés insertion en A1 de chaque Feuille (Sauf "Incivilté Client") de la formule

=DROITE(CELLULE("nomfichier";$A$1);NBCAR(CELLULE("nomfichier";$A$1))-TROUVE("]";CELLULE("nomfichier";$A$1)))

Code dans ThisWorkBook

Option Explicit
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
' Ce code est lancé après qu'une feuille quelconque ait été activée

Dim i As Integer, j As Integer

Application.ScreenUpdating = False

If Range("A1") = "Sécurité" Or Range("A1") = "Caisse" Or Range("A1") = "Vendeurs" Or Range("A1") = "ELS" Then
' Si la cellule A1 de la feuille sélectionnée comporte l'une de ces abréviations, alors ...
' (Sinon il ne se passe rien et le code s'arrête là)

    Range("A15:J200").ClearContents
    ' ... on vide le contenu des lignes 15 à 200 de la feuille sélectionnée et ...

    With Sheets("Incivilité Client")
    ' With / End With permet de travailler sur deux feuilles en parallèle
    ' Ci-dessous, les reférences avec un point devant concerne la feuille
    ' indiquée ci-dessus, les références sans point celles de la feuille sélectionnée

        For i = 3 To .Range("A200").End(xlUp).Row
        ' Permet de passer en revue toutes les lignes de la feuille "Planning général jusqu'à ligne 200"

            If .Range("E" & i) = Range("A1") Then
            ' Si la cellule de la colonne E de la ligne passée en revue de la feuille "Planning général"
            ' correspond à la cellule A1 de la feuille sélectionnée alors .......

                j = Range("A200").End(xlUp).Row + 1
                ' On cherche à chaque fois quelle est la première ligne vide de la feuille sélectionnée ...

                .Range("A" & i & ":J" & i).Copy Destination:=Range("A" & j)
                ' ... et on copie la ligne concernée de la feuille "Planning général"
                ' pour la coller après la dernière ligne de la feuille sélectionnée

            End If
        Next i
    End With
End If

End Sub

Cordialement

Bonjour Amadeus,

un super résultat tout comme je le souhaitais!!!

J'ai plus qu'a comprendre la partie de macro que tu as ajouté.

Merci beaucoup pour ton aide.

Edouard

Bonjour

Petite remarque

Le premier fichier joint faisait 5,7 Mo (et est passé quand même. Je trouvais le temps bien long...). Je l'ai donc remplacé par celui-ci (moind de 100 Ko)

J'espére que tu n'as pas chargé le premier!!

Cordialement

Bonjour Amadéus,

j'ai ouvert le premier fichier pour voir un peu, je suis curieux...

Merci beaucoup pour les explications, je vais regardé cela au calme pour déchiffrer la macro.

J'ai un léger problème, il me copie à chaque fois toute la ligne et pas uniquement le tableau colonne A à J...

Je ne peux pas déplacer les cellules nommées dans une autre feuille car cela ne marche pas...

En remplicant les lignes, je remarque qu'il m'inscrit plusieurs fois la même ligne, un léger problème de redondance que je m'explique pas.

Merci encore pour ton aide précieuse!!!

Edouard

Bonjour

J'ai mis tes listes sur une autre Feuille.

J'ai changé ta formule de validation en colonne E

Sur toutes les Feuilles, (sauf "Incivilité Client"), la ligne de titre doit être la même; sur ce fichier la ligne 14.

Teste et dis moi...

cordialement

Bonjour,

ok pour moi, cela fonctionne et je n'ai plus la redondance.

Super.

Pour commencer les autres feuilles à la ligne 2 je dois modifier cela:

Range("A15:J200").ClearContents

' ... on vide le contenu des lignes 15 à 200 de la feuille sélectionnée et ...

En:

Range("A2:J200").ClearContents

' ... on vide le contenu des lignes 15 à 200 de la feuille sélectionnée et ...

Comme cela je simplifie la mise en page et je diminue le poids du fichier.

Merci pour ton aide.

Edouard

Rechercher des sujets similaires à "copie ligne feuille condition"