Problème copie colle

Bonjour à vous forum

Je sais que ce sujet est vu et revu mais je n'ai pas réussi à trouver une discussion de forum qui me débloque de mon problème.

J'ai fait une macro qui copie colle les données sur un autre onglet, sur certains fichiers j'utilisais cette macro pour le réaliser et cela fonctionnait mais pour celui-ci et en essayant de garder la même structure avec un ajout de quelques variables, cela ne réagit pas.

Je ne sais pas s'il faut ajouter une autre variable ou non.

Voici mon code :

Sub Copie_Colle()

'Déclaration de la variable de ligne
Dim a As Integer
'Identifie la dernière ligne de l'onglet Synthèse plans d actions
derlig = Worksheets("Synthèse plans d actions").Range("B65000").End(xlUp).Row + 1
'Identifie la dernière ligne de l'onglet Sécurité
DerLigBrute = Sheets("Sécurité").Range("B65000").End(xlUp).Row + 1
'De la dernière ligne vers la dernière des deux onglets en question
For a = derlig To DerLigBrute
'Si la cellule est différente de vide dans la colonne B et Colonne Q = En attente/bloqué ou En cours alors
If Worksheets("Sécurité").Cells(derlig, 2).Value <> "" And Worksheets("Sécurité").Cells(derlig, 17).Value = "En attente/bloqué" Or Worksheets("Sécurité").Cells(derlig, 17).Value = "En cours" Then
'Si la cellule de la colonne B de l'onglet "Synthèse plans d actions" n'est pas retrouvé dans l'onglet Sécurité et que en colonne P il n'y pas de date alors
If Worksheets("Synthèse plans d actions").Cells(a, 2).Value <> Worksheets("Sécurité").Cells(derlig, 2).Value And Worksheets("Synthèse plans d actions").Cells(a, 16).Value = "" Then
'Il copie colle les données de la colonne B,C,D et F de l'onglet Sécurité vers l'onglet Synthèse plans d actions jusqu'à la dernière non vide
derlig = Worksheets("Synthèse plans d actions").Range("B65000").End(xlUp).Row + 1
Worksheets("Synthèse plans d actions").Cells(derlig, 2).Value = Worksheets("Sécurité").Cells(a, 2).Value
Worksheets("Synthèse plans d actions").Cells(derlig, 3).Value = Worksheets("Sécurité").Cells(a, 3).Value
Worksheets("Synthèse plans d actions").Cells(derlig, 4).Value = Worksheets("Sécurité").Cells(a, 4).Value
Worksheets("Synthèse plans d actions").Cells(derlig, 6).Value = Worksheets("Sécurité").Cells(a, 6).Value
'Fin de la condition
End If
End If
'Prochaine ligne
Next a

End Sub

Je veux simplement que lorsque sur l'onglet Sécurité, si cellule en colonne B non vide et si colonne Q contient En attente/bloqué ou En cours alors il copie colle les données de la ligne sur l'onglet Synthèse plans d actions

et si j'appuie une deuxième fois sur le même bouton de la macro, je voudrais qu'il vérifie que les données déjà collées ne soient pas coller à nouveau (pour éviter des doublons) s'il y a une date en P de l'onglet Synthèse plans d actions pour la même ligne de données (cette même ligne est identifiée par le code unique inscrit en colonne B) alors il ne le colle pas à nouveau. S'il n'y a rien il actualise juste les données.

En somme, j'appuie une première fois pour remplir les données des onglets vers l'autre, et les autres fois ce sont juste des mises à jour des données de la page et en ajoutant les nouvelles lignes qui n'existaient pas encore.

Je ne sais pas si j'ai bien expliqué mon problème.

Je vous ai mis en PJ le fichier

PS: Les données d'analyse pour la transposition se font à partir de la ligne 29. Et les données sont collées à partir de la ligne 5 de l'onglet Synthèse plans d actions

Merci à vous pour votre aide

Namco

Bonjour,

à mon avis il faut revoir les conditions.

For a = derlig To DerLigBrute

??? pourquoi ? derlig la première info de l'onglet securité arrive en ligne 29 minimum

donc c'est plutôt

For a = 29 To DerLigBrute
If Worksheets("Sécurité").Cells(derlig, 2).Value <> "" And Worksheets("Sécurité").Cells(derlig, 17).Value = "En attente/bloqué" Or Worksheets("Sécurité").Cells(derlig, 17).Value = "En cours" Then

Derlig c'est la première ligne vide de l'autre onglet donc je vois pas bien l'utilité de l'utiliser dans l'onglet sécurité ???

Par ailleurs je suppose que si une info est indiquée en colonne 17 alors c'est que la colonne 2 n'est pas vide ! donc le premier if

ne sert pas à grand chose.

Le reste est à revoir aussi il y a mélange dans l'utilisation de "a" de "derlig" et de "derligbrut"

Salut Xmenpl

Je te remercie pour ton retour

Malheureusement, c'est en cherchant dans beaucoup de forum que je suis tombé sur une macro qui fonctionnait pour la personne qui demandait un coup de pouce.

Je l'ai bidouillé à ma façon, je n'ai malheureusement pas réussi à faire un truc qui fonctionne.

J'ai essayé de faire une macro événementielle mais là aussi je pêche, j'essaye pleins de trucs mais cela a du mal à coller.

Je dois surement oublier quelque chose à chaque fois ou bien je n'ai pas vraiment compris la logique de la macro.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Q29:Q65536")) Is Nothing Then
If Target.Value = "En attente/bloqué" Or Target.Value = "En cours" Then
With Sheets("Synthèse plans d actions")
LigVide = .Range("B65536").End(xlUp).Row + 1
.Cells(LigVide, 2) = Target.Offset(i, -15).Value
.Cells(LigVide, 3) = Target.Offset(i, -14).Value
.Cells(LigVide, 4) = Target.Offset(i, -13).Value
.Cells(LigVide, 6) = Target.Offset(i, -11).Value
.Cells(LigVide, 10) = Target.Offset(i, -7).Value
.Cells(LigVide, 13) = Target.Offset(i, -4).Value
.Cells(LigVide, 15) = Target.Offset(i, -3).Value
End With
End If
End If
End Sub

Il ne me reste plus qu'à faire fonctionner cette macro pour finaliser mon fichier.

Je vais essayer de chercher encore mais je pense avoir épuisé pas mal sur les forums lol

Pourtant ce que je recherche me semble facile à comprendre mais le faire c'est autre chose

Je veux juste copier coller les valeurs vers un autre onglet quand sur la colonne Q du 1er onglet il y a "En cours" ou "En attente/bloqué" et ne pas le coller en doublon sur le deuxième onglet.

Merci pour ton aide

Namco

Bonjour,

Oui je comprend bien le principe seulement je ne vois pas trop comment faire sans doublon ?

Je m'explique.

Faire un test sur la dernière ligne renseignée de l'onglet sécurité et la copier si condition ok. ( çà c'est faisable ).

Le problème vient à partir du comment ou on changera le contenu de la colonne Q quand une action sera modifiée.

là la macro ne fonctionnera plus puisque ce n'est pas forcément la dernière ligne qui est modifiée.

Tout cela me parait bien compliqué pour une résultat qui pourrait être obtenu plus rapidement avec un TCD tableau croisé

dynamique qui pourrait filtrer par action et qui s'actualise pour se mettre à jour à l'ouverture du fichier ou par un clic droit.

Bonjour

Je vous remercie de votre aide

Je vais essayer autrement. C'est un peu en rallonge mais ce n'est pas grave.

Bonne journée à vous

Namco

Rechercher des sujets similaires à "probleme copie colle"