Copier une ligne sous conditions et coller à la suite sur une autre feuille

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

K

kerlannais

Guest
Bonjour,

Voilà j'ai fait un programme d'audit pour ma société avec 1 fiche par service (50 fiches).

Et je dois pouvoir mettre automatiquement dans une autre feuille (plan d'action) les lignes non conformes (colonne H: Non conformité: oui sinon rien)

Donc je dois créer une macro qui dit:

1. Si les cellules de la colonne H sont pleines alors copier les lignes (de la colonne A à la colonne H)
2. Copier les cellules copier dans la feuille "PA" à la suite des precedentes

Et ceci pour chaqu'une des 50 fiches

J'ai commencé à bidouiller à partir de:

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 03/02/2010 par

Sheets(2).Cells(1, 1).Copy Sheets(1).Cells(65535, 1).End(xlUp)(2)
End Sub

Mais je n'y arrive pas merci de m'aider...😕
 
Re : Copier une ligne sous conditions et coller à la suite sur une autre feuille

En fait dans les cellules de la colonne H, il y a:
- oui si c'est non conforme
- "" si c'est conforme

donc je ne veux copier que les lignes de chaque page ayant oui dans la colonne H.

Est ce que je suis clair??

Sinon je veux bien envoyé mon fichier mais je ne sais comment faire...😱
 
Re : Copier une ligne sous conditions et coller à la suite sur une autre feuille

Bonjour le fil, bonjour le forum,

Si j'ai bien compris, il y a un onglet par fiche et un onglet plan d'action... Dans ce cas le code ci-dessous devrait convenir (à adapter si nécessaire) :
Code:
Sub Macro1()
Dim ong As Worksheet 'déclare la variable ong (ONGlet)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (DESTination)
 
For Each ong In Sheets 'boucle 1 : sur tous les onglets du classeur (ou sur toutes les fiches)
    If ong.Name <> "plan d'action" Then 'condition 1 : si le nom de l'onglet est différent de "plan d'action"
 
        'boucle 2 : sur toutes les cellules éditée cel de la colonne H (en partant de la seconde)
        For Each cel In ong.Range("H2:H" & ong.Range("H65536").End(xlUp).Row)
            If cel.Value <> "" Then 'condition 2 : si la cellule n'est pas vide
                Set dest = Sheets("plan d'action").Range("A65536").End(xlUp).Offset(1, 0) 'définit la variable dest (destination de la copie)
                Range(cel.Offset(0, -7), cel).Copy dest 'copie la ligne et la colle dans dest
            End If 'fin de la condition 2
        Next cel 'prochaine cellule cel de la boucle 2
 
    End If 'fin de la condition 1
Next ong 'prochain onglet (ou fiche) de la boucle 1
End Sub
 
Re : Copier une ligne sous conditions et coller à la suite sur une autre feuille

Génial ca fonctionne jean marcel, mais je n'arrive pas à faire ca pour tous...😱

Je teste la version de robert de suite
 
Re : Copier une ligne sous conditions et coller à la suite sur une autre feuille

Petit retour...

Robert cela fonctionne mais je veux la lignes complète et je ne sais comment faire avec cel.offset

Jean-Marcel: c est exctement ce que je veux mais est ce possible de faire une mise à jour de Plan d Action si je mets non par la suite à la place de oui??
 
Re : Copier une ligne sous conditions et coller à la suite sur une autre feuille

Bonjour et merci de votre aide,

En fait mon soucis est de me dire que si aujourd'hui je remplit ma ligne et que je met sur mon plan d'action "former les agents à l'utilisation du logiciel" et que derrière, en réunion, on me demande de faire une modification et bien la modification se fait pas dans "PA".

Donc j'aimerai avoir un bouton pour dire: allez petit excel relance toutes les macro de chaque feuille pour mettre à jour...

En fait là je suis à un doigts de terminer ce satané fichier si vous pouvez m'aider à mettre à jour...
 
Re : Copier une ligne sous conditions et coller à la suite sur une autre feuille

Bonjour à tous

Petite reflexion au passage, perso, plutôt que de placer le code 50 fois dans les différents modules, je l'aurais placé dans le module "thisworkbook", en isolant la feuille "PA", dans ce cas, un seul code à modifier si évolution...

Code:
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> "PA" Then
    'ton code
End If
End Sub

bonne journée
@+
 
Re : Copier une ligne sous conditions et coller à la suite sur une autre feuille

Bonjour,

@Jean-Marcel
J'ai utilisé ton code, et il fonctionne parfaitement.(un grand merci donc)
Ma question : quelle instruction faut-il ajouter afin que la macro ne recopie que la valeur des cellules?

Marc
 
Re : Copier une ligne sous conditions et coller à la suite sur une autre feuille

@Jean-Marcel
Merci pour la réponse rapide, mais malheureusement cela ne fonctionne pas🙁
Voici mon (ton) code :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect([L6:L65536], Target) Is Nothing And Target.Count = 1 Then
    If Target.Value > "" Then
        Range(Cells(Target.Row, 1), Cells(Target.Row, 12)).Copy Destination:=Sheets("RECAP").Range("A" & Sheets("RECAP").Range("A65536").End(xlUp).Row + 1)
        Range(Cells(Target.Row, 1), Cells(Target.Row, 12)).Delete
    End If
End If
End Sub
 
Re : Copier une ligne sous conditions et coller à la suite sur une autre feuille

Salut, je reprends le post car je souhaite faire un peu la même chose. Mais à la place des Oui ou non j'aurais une date de réalisation. Je souhaite copier les cellules où la date est indiquée.
Je n'arrive pas à trouver l'info. Pouvez-vous m'aider ?
 
Re : Copier une ligne sous conditions et coller à la suite sur une autre feuille

bonjour,
j'ai un problème identique que je n'arrive pas à régler malgré l'utilisation de vos macro, voici ma demande :

->J'ai créé une condition : lorsque l'utilisateur sélectionne son nom
->dans
le menu déroulant, la colonne date se met automatiquement à jour.
Je voudrai, que lorsque l'utilisateur complète sur la même ligne la cellule remarque (colonne D), cela verrouille les colonnes A, B, C, D de la ligne.
Ainsi les autres utilisateurs ne pourront plus modifier la cellule et aussi, la date verrouillée ne se mettra plus à jour au redémarrage du fichier.

->Deuxième demande : je voudrai que lorsque la cellule "urgent" apparait
(j'ai créé une condition pour que cela apparaisse au bout de 15 jours lorsque la remarque n'est pas réalisée), que la ligne soit recopiée en feuille urgent.
Attention chaque feuille correspond à un mois de l'année et doit répondre également à cette condition.

Merci de votre aide.
 

Pièces jointes

- 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

Retour