Copier coller ligne sur ligne changeante si condition

Y compris Power BI, Power Query et toute autre question en lien avec Excel
m
mhvt59
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 26 septembre 2017
Version d'Excel : 2010

Message par mhvt59 » 26 septembre 2017, 11:17

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.
test_forum.xlsm
(571.67 Kio) Téléchargé 21 fois
Avatar du membre
Jers19
Membre fidèle
Membre fidèle
Messages : 305
Appréciations reçues : 27
Inscrit le : 14 septembre 2017
Version d'Excel : 2010

Message par Jers19 » 26 septembre 2017, 21:46

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
m
mhvt59
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 26 septembre 2017
Version d'Excel : 2010

Message par mhvt59 » 27 septembre 2017, 10:02

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
Avatar du membre
Jers19
Membre fidèle
Membre fidèle
Messages : 305
Appréciations reçues : 27
Inscrit le : 14 septembre 2017
Version d'Excel : 2010

Message par Jers19 » 27 septembre 2017, 12:28

poste ton fichier
m
mhvt59
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 26 septembre 2017
Version d'Excel : 2010

Message par mhvt59 » 27 septembre 2017, 13:33

Jers19 a écrit :poste ton fichier
Déjà attaché au premier message.
Je te le re
merci
test_forum.xlsm
(573.16 Kio) Téléchargé 16 fois
Avatar du membre
Jers19
Membre fidèle
Membre fidèle
Messages : 305
Appréciations reçues : 27
Inscrit le : 14 septembre 2017
Version d'Excel : 2010

Message par Jers19 » 27 septembre 2017, 20:39

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
m
mhvt59
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 26 septembre 2017
Version d'Excel : 2010

Message par mhvt59 » 29 septembre 2017, 13:38

Excellent!
Je te remercie.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message