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

kerlannais

XLDnaute Junior
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...:confused:
 

kerlannais

XLDnaute Junior
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...:eek:
 

Robert

XLDnaute Barbatruc
Repose en paix
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
 

kerlannais

XLDnaute Junior
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??
 

kerlannais

XLDnaute Junior
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...
 

Pierrot93

XLDnaute Barbatruc
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
@+
 

msingle

XLDnaute Junior
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
 

msingle

XLDnaute Junior
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
 

grosquick59

XLDnaute Junior
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 ?
 

mapatos

XLDnaute Nouveau
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

  • maincouranteessai.xls
    92.5 KB · Affichages: 36
  • maincouranteessai.xls
    92.5 KB · Affichages: 41
  • maincouranteessai.xls
    92.5 KB · Affichages: 45

Discussions similaires

Statistiques des forums

Discussions
312 649
Messages
2 090 511
Membres
104 560
dernier inscrit
ribambelle