Macro pour copier coller informations à emplacement variable

alexa974

XLDnaute Nouveau
Bonjour à tous,

Une fois n'étant pas coutume, me voici avec une nouvelle et ô combien palpitante mission de MACROtage... :))

J'ai mis en PJ le fichier sur lequel j'ai commencé à travailler ma macro.

Concrètement :

J'ai un premier onglet où se trouvent des informations qui doivent être copiées/collées dans un autre onglet mais le piment de l'histoire c'est que les informations à coller changent à chaque fois.

En effet il se peut que lorsque je décide d'exécuter ma macro dans l'onglet "dossiers en attente" (qui aura de fortes chances d'être une macro événementielle sur saisie du "non" dans la colonne "K" de chaque onglet), je souhaite un jour déplacer les informations de la ligne "3" et le lendemain celle de la ligne "1" sachant qu'à la fin de cette macro la dite ligne sera supprimée et la ligne "4" deviendra "3" et "2" deviendra "1" et ainsi de suite.

Le principe de ce fichier, qui soit dit en passant sera partagé, sera d'éviter une "double saisie" ou pire des "copiés collés" tant haïs pas mes collègues assistantes et tout bon gestionnaire en charge du "reporting parfait".

Comme vous le constaterez la macro que j'ai enregistrée est basée sur le mouvement des cellules de la ligne "3" en particulier alors qu'elle devra s'exécuter sur :
- soit la dernière ligne ou le mot "non" sera saisi en colonne K
- soit si l'action ci-dessus n'est pas possible, la dernière ligne modifiée sur action d'une commande du type "bouton d'action" (mais c'est risqué surtout sur un fichier partagé!)


Voilà vous connaissez mon problème.

Rien ne va plus Messieurs Dames...
Faîtes vos jeux!!!
Je suis ouverte à toute proposition!! :))

Et MERCI MERCI MERCI à tous ceux qui auront un peu de pitié pour moi lol

A très vite

Alexa974
 

alexa974

XLDnaute Nouveau
Re : Macro pour copier coller informations à emplacement variable

Bonsoir

A voir

Bonne nuit

Bonjour Banzai64,

J'ai bien reçu votre fichier et cela est effectivement très utile je vous remercie donc.

Par contre la macro copie colle une référence de ligne continue alors que je osuhaite copier coller plusieurs emplacements différents de cellules dont les emplacements diffèrent également dans la zone à coller.
Exemple : A3 de la feuille source se collerait dans C3 de la feuille de destination et B3 de la feuille source dans K3 de la feuille de destination sachant que les cellules de la colonne B se colleraient toujours dans K et celle de la colonne A dans celles de la colonne C (je ne suis pas sûrte d'être très claire sur ce point, n'hésitez pas à me le dire).

De plus j'ai essayé de dupliquer la macro pour qu'elle fasse le même principe sur un autre onglet quand le mot "OUI" est saisi mais j'ai une boîte de dialogue d'erreur qui s'insère : est ce parce qu'on ne peut pas insérer 2 Private Sub du même type derrière une même feuille?

Merci pour ces informations.
 

Banzai64

XLDnaute Accro
Re : Macro pour copier coller informations à emplacement variable

Bonsoir

je me suis inspiré de la macro qui était déjà dans ton fichier
Elle recopiait de "A3" vers "A3", de "B3" vers "B3" etc

Si il a du changement dans un fichier tu marques exactement ce que tu veux
exemple : A3 vers C3, B3 vers K3 et cela pour toutes les cellules à recopier

Si la macro dupliquée est toujours dans la même feuille : Oui on ne peut pas avoir deux fois la même macro dans une feuille

Explique ton problème et il y aura une solution

Bonne soirée
 

alexa974

XLDnaute Nouveau
Re : Macro pour copier coller informations à emplacement variable

Bonsoir

je me suis inspiré de la macro qui était déjà dans ton fichier
Elle recopiait de "A3" vers "A3", de "B3" vers "B3" etc

Si il a du changement dans un fichier tu marques exactement ce que tu veux
exemple : A3 vers C3, B3 vers K3 et cela pour toutes les cellules à recopier

Si la macro dupliquée est toujours dans la même feuille : Oui on ne peut pas avoir deux fois la même macro dans une feuille

Explique ton problème et il y aura une solution

Bonne soirée


Bonjour Banzai,


J'ai tenté le code suivant qui semble fonctionner à un détail près qu'il ne me colle pas les lignes les unes à la suite des autres mais les met toujours en ligne 2... c'est très ennuyeux pour un tableau de consolidation!
Pourtant dans le fichier initial cela fonctionne...

SOS! Je dois rendre le fichier demain et je suis presque arrivée au but!!!

Merci d'avance.



Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lg As Long ' Numéro de la ligne de recopie
If Not Intersect(Range("L2:L" & Range("A65536").End(xlUp).Row), Target) Is Nothing Then
If UCase(Target) = "NON" Then
With Sheets("Dossiers NA ou NON SIGNES")
Lg = .Range("A65536").End(xlUp).Row + 1
End With
Application.EnableEvents = False
Range("A" & Target.Row & ":M" & Target.Row).Copy Sheets("Dossiers NA ou NON SIGNES").Range("A" & Lg)
Range("A" & Target.Row & ":M" & Target.Row).Delete shift:=xlShiftUp
Application.EnableEvents = True

ElseIf UCase(Target) = "OUI" Then
With Sheets("Dossiers SIGNES")
Lg = .Range("A65536").End(xlUp).Row + 1
End With
Application.EnableEvents = False
Range("A" & Target.Row & ":M" & Target.Row).Copy Sheets("Dossiers SIGNES").Range("A" & Lg)
Range("A" & Target.Row & ":M" & Target.Row).Delete shift:=xlShiftUp
Application.EnableEvents = True
End If

End If

End Sub
 
Dernière édition:

alexa974

XLDnaute Nouveau
Re : Macro pour copier coller informations à emplacement variable

Je viens de m'apercevoir que les lignes ne se copient que si c'est la cellule en ligne 2 qui est modifiée : comment faire pour que cela se produise sur modification de n'importe quelle cellule de la colonne "L"?
 

Banzai64

XLDnaute Accro
Re : Macro pour copier coller informations à emplacement variable

Bonjour

En effet la macro se sert de la colonne A pour déterminer le nombre de ligne du tableau

Alors il faut que tu remplaces le "A" de "A65536" par le nom d'une colonne qui sera TOUJOURS renseignée
Exemple C ou D ou .....
If Not Intersect(Range("L2:L" & Range("A65536").End(xlUp).Row), Target) Is Nothing Then
If Not Intersect(Range("L2:L" & Range("B65536").End(xlUp).Row), Target) Is Nothing Then
 

alexa974

XLDnaute Nouveau
Re : Macro pour copier coller informations à emplacement variable

Bonjour,


Merci pour l'aide précieuse que vous m'avez apportée.

J'ai essayé de dupliquer cette macro dans un autre classeur mais celle-ci ne fonctionne pas du tout.

Voici la macro que j'ai dupliquée :

Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)

Dim Lg As Long
If Not Intersect(Target, Range("P2:p65000")) Is Nothing Then
If UCase(Target) = "en négo" Then
With Sheets("EN NEGO")
Lg = .Range("A65536").End(xlUp).Row + 1
End With
Application.EnableEvents = False
Range("A" & Target.Row & ":T" & Target.Row).Copy Sheets("EN NEGO").Range("A" & Lg)
Range("A" & Target.Row & ":T" & Target.Row).Delete shift:=xlShiftUp
Application.EnableEvents = True

ElseIf UCase(Target) = "accord verbal" Then
With Sheets("ACCORD VERBAL")
Lg = .Range("A65536").End(xlUp).Row + 1
End With
Application.EnableEvents = False
Range("A" & Target.Row & ":T" & Target.Row).Copy Sheets("ACCORD VERBAL").Range("A" & Lg)
Range("A" & Target.Row & ":T" & Target.Row).Delete shift:=xlShiftUp
Application.EnableEvents = True

ElseIf UCase(Target) = "signé" Then
With Sheets("SIGNE")
Lg = .Range("A65536").End(xlUp).Row + 1
End With
Application.EnableEvents = False
Range("A" & Target.Row & ":T" & Target.Row).Copy Sheets("SIGNE").Range("A" & Lg)
Range("A" & Target.Row & ":T" & Target.Row).Delete shift:=xlShiftUp
Application.EnableEvents = True

ElseIf UCase(Target) = "abandon" Then
With Sheets("ABANDON")
Lg = .Range("A65536").End(xlUp).Row + 1
End With
Application.EnableEvents = False
Range("A" & Target.Row & ":T" & Target.Row).Copy Sheets("ABANDON").Range("A" & Lg)
Range("A" & Target.Row & ":T" & Target.Row).Delete shift:=xlShiftUp
Application.EnableEvents = True

ElseIf UCase(Target) = "archivé" Then
With Sheets("ARCHIVE DOSSIERS")
Lg = .Range("A65536").End(xlUp).Row + 1
End With
Application.EnableEvents = False
Range("A" & Target.Row & ":T" & Target.Row).Copy Sheets("ARCHIVE DOSSIERS").Range("A" & Lg)
Range("A" & Target.Row & ":T" & Target.Row).Delete shift:=xlShiftUp
Application.EnableEvents = True

ElseIf UCase(Target) = "non retenu" Then
With Sheets("NON RETENU")
Lg = .Range("A65536").End(xlUp).Row + 1
End With
Application.EnableEvents = False
Range("A" & Target.Row & ":T" & Target.Row).Copy Sheets("NON RETENU").Range("A" & Lg)
Range("A" & Target.Row & ":T" & Target.Row).Delete shift:=xlShiftUp
Application.EnableEvents = True
End If

End If

End Sub



Mon erreur viendrait elle des ElseIf successif? (je ne pense pas puisque jai essayé avec une seule condition et ça ne donne rien non plus mais bon...)
Est la liste de choix? (je les ai suprimées de mon fichier car trop lourd)

J'ai retiré beaucoup d'onglets car je ne pouvais pas attacer le fichier autrement.

La variable se trouvera dans les cellules de la colonne dont l'en-tête est "Statut prospection" et celle-ci est en colonne P sur le fichier définitif (que (je reprécise) je n'ai pas pu mettre en raison de sa taille)

Je dois rendre le fichier au plus tard vendredi matin donc si vous pouviez m'aider ce serait MA-GNI-FIQUE!!
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 316
Membres
102 860
dernier inscrit
fredo67