Copier coller ligne sur ligne changeante si condition

Bonjour à tous,

je suis nouveau sur le forum et je ne trouve pas le code correct pour faire ma macro.

C'est pourquoi, je sollicite votre aide s'il vous plait.

J'ai un fichier excel (que je joins à ce message) qui me sert de rapport journalier.

Le problème est que j'aimerais copier une ligne entière (ou sa plage de la cellule B à U) seulement sous condition en cellule G ET H. (sheet Lundi)

Avec pour G = "Planifier inter" et H = "A"

Lorsque ces deux cellules ont les dites valeurs, la ligne (ou sa plage de B à U) doit être copier en ligne 81 de mon exemple (tableau spécifique pour un groupe de travail) et toujours dans le même onglet.

Des copies de sheet avec les autres jours de la semaine sera fait par la suite.

Seulement, là où cela se complique est que cette ligne de collage peut-être décalée, et n'est plus en ligne 81.

Car dans les deux tableaux précédents, un ajout de ligne (par double clic) est possible. Ce qui décale la première ligne de mon tableau finale.

Et toutes les lignes qui remplissent ces conditions de collage doivent être collées les unes en dessous des autres.

Voila, j’espère avoir été assez clair pour être compris.

Je vous remercie du temps que vous pourriez m'accorder.

31test-forum.xlsm (571.67 Ko)

Salut,

SI j'ai bien compris, tu veux afficher les taches prioritaires de l'équipe de nuit en considérant que les taches prioritaires sont celles du matin ET de l'apm qui répondent aux critères G = "Planifier inter" et H = "A".

Si oui, pourquoi le pas nommer les cellules de départ de chaque tableau afin de ne plus être dépendant de la référence.

Dans ton Ex, il faudrait nommer B12, B46 et B80.

Si on considére que B12 est nommé "ListeMatin, cela donnerai :

Sub AjoutTachesPrioritaires()
j = 0
NbLignesMatin = Range("ListeMatin").End(xlDown).Row - Range("ListeMatin").Row
For i = 1 To NbLignesMatin
    If Range("ListeMatin").Offset(i, 5).Value = "Planifier inter" And Range("ListeMatin").Offset(i, 6).Value = "A" Then
        j = j + 1
        Range(Range("ListeMatin").Offset(i, 0), Range("ListeMatin").Offset(i, 20)).Copy
        Range("ListePriorites").Offset(j, 0).Select '=B80 dans notre exemple
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'copie valeurs
        Application.CutCopyMode = False
        Range("ListePriorites").Offset(j + 1, 0).EntireRow.Select  'Ajoute une ligne
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    End If
Next
End Sub

Puis tu fais la même chose pour l'apm

Bonjour Jers19,

Je te remercie pour ta réponse.

En effet, définir un nom la cellule est la bonne solution.

Mais malgré ton code qui semble correct, cela ne fait pas "coller" la ligne.

Il ne se passe rien.

Je ne vois pas où est l'erreur.

Merci

poste ton fichier

Jers19 a écrit :

poste ton fichier

Déjà attaché au premier message.

Je te le re

merci

23test-forum.xlsm (573.16 Ko)

Salut,

Effectivement, ça ne fonctionne pas avec le copier coller valeur, je ne sais pas pourquoi.

Par contre, ça marche avec le copier coller tout. Si ça te convient tu peux faire ça:

Remplacer

       Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'copie valeurs

par

ActiveSheet.Paste

Par contre, il faut aussi modifier tes numéros de colonne au niveau du offser pour atteindre G et H

Remplacer

If Range("ListeMatin").Offset(i, 7).Value = "Planifier inter" And Range("ListeMatin").Offset(i, 8).Value = "A" Then

par

If Range("ListeMatin").Offset(i, 7).Value = "Planifier inter" And Range("ListeMatin").Offset(i, 8).Value = "A" Then

j'ai oubli de changer

par :

    If Range("ListeMatin").Offset(i, 5).Value = "Planifier inter" And Range("ListeMatin").Offset(i, 6).Value = "A" Then

Excellent!

Je te remercie.

Rechercher des sujets similaires à "copier coller ligne changeante condition"