OVH Cloud OVH Cloud

Modification code

7 réponses
Avatar
totontitus
Bonjour,

J'ai un code que j'ai récupérer sur le net, qui me permet par simple clic de copier une cellule, puis par double clic de la coller dans toute la feuille, par contre est-il possible de modifier ce code de façon à ne pouvoir utiliser ce collage par double clic que dans une certaine plage définie ex: A10:B100

Option Explicit
Dim rPrevious As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row < 7 Then
Set rPrevious = Target
Else
End If
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not rPrevious Is Nothing Then
rPrevious.Copy Destination:=Target 'copier les formats (couleur et bordure)
'Target.Value = rPrevious.Value 'ne pas copier les formats (couleur et bordure)
End If
End Sub

Merci

Cordilement

7 réponses

Avatar
MichD
Le 19/03/20 à 08:22, totontitus a écrit :
Bonjour,
J'ai un code que j'ai récupérer sur le net, qui me permet par simple clic de
copier une cellule, puis par double clic de la coller dans toute la feuille, par
contre est-il possible de modifier ce code de façon à ne pouvoir utiliser ce
collage par double clic que dans une certaine plage définie ex: A10:B100
Option Explicit
Dim rPrevious As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row < 7 Then
Set rPrevious = Target
Else
End If
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
If Not rPrevious Is Nothing Then
rPrevious.Copy Destination:=Target 'copier les formats (couleur et
bordure)
'Target.Value = rPrevious.Value 'ne pas copier les formats (couleur et
bordure)
End If
End Sub
Merci
Cordilement

Bonjour,
Le hic de ce type de procédure, lorsque tu arrives pour copier ce que tu
as sélectionné, tu dois être sûr de faire un double-clic sur la cellule
de destination, la différence entre un clic et un double-clic n'est pas
très grande. Si par malheur tu fais un clic juste avant le double-clic,
les données à copier auront disparu.
'Dans le haut du module
Option Explicit
Dim rPrevious As Range
Dim Rg As Range
'-------------------------------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target _
As Range, Cancel As Boolean)
If Target.Cells.Count = 1 Then
Target.Resize(rPrevious.Rows.Count, _
rPrevious.Columns.Count).Value = rPrevious.Value
Set rPrevious = Nothing
Else
Set rPrevious = Nothing
End If
End Sub
'-------------------------------------------------------------
'Chaque fois que tu sélectionnes une plage de cellules dans
'la feuille de calcul, cet événement l'enregistre dans la
'variable "rPrevious. Dans cette procédure, il y a une
'condition pour que cela se produise, la colonne de la
'plage sélectionnée doit être dans la plage A1:B100
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If rPrevious Is Nothing Then
Set Rg = Intersect(Target, Range("A1:B100"))
'Cette ligne de code test une sélection définie par la
'ligne précédente existe vraiment
If Not Rg Is Nothing Then
'si oui, elle affecte rPrevious, la plage retenue
Set rPrevious = Rg
Else
Set rPrevious = Rg
End If
End If
End Sub
'-------------------------------------------------------------
MichD
Avatar
totontitus
Le jeudi 19 Mars 2020 à 13:22 par totontitus :
Bonjour,
J'ai un code que j'ai récupérer sur le net, qui me permet par
simple clic de copier une cellule, puis par double clic de la coller dans toute
la feuille, par contre est-il possible de modifier ce code de façon
à ne pouvoir utiliser ce collage par double clic que dans une certaine
plage définie ex: A10:B100
Option Explicit
Dim rPrevious As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row < 7 Then
Set rPrevious = Target
Else
End If
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
If Not rPrevious Is Nothing Then
rPrevious.Copy Destination:=Target 'copier les formats (couleur et
bordure)
'Target.Value = rPrevious.Value 'ne pas copier les formats (couleur et
bordure)
End If
End Sub
Merci
Cordilement
Bonjour MichD
Merci de m'aider en fait je vous ai mis un fichier pour plus de compréhension
Ps: dans le fichier joint ne tenir en compte que la plage B8:B38 pour le collage
https://www.cjoint.com/c/JCtrxXd322j
Avatar
MichD
Ton fichier : https://www.cjoint.com/c/JCttoqORw6j
MichD
Avatar
MichD
Le 19/03/20 à 15:15, MichD a écrit :
Ton fichier : https://www.cjoint.com/c/JCttoqORw6j
MichD

Tu sais, tu peux sélectionner plus d'une cellule adjacente à la fois
dans la même colonne pour d'effectuer la recopie dans la colonne B.
Exemple D2:D5 pour la recopie des 4 cellules en colonne B.
J'ai modifié une ligne de code si tu devais copier plus d'une ligne à la
fois pour faciliter la suppression des données en cas d'erreur
https://www.cjoint.com/c/JCttFWPnbij
MichD
Avatar
totontitus
Le jeudi 19 Mars 2020 à 20:15 par MichD :
Ton fichier : https://www.cjoint.com/c/JCttoqORw6j
MichD
Bonsoir MichD
Merci bien c'est gentil de votre part de m'avoir aidé, c'est exactement ce que je voulais mise à part un petit truc qui fonctionnait sur l'autre macro et pas sur la votre, c'est à dire que sur l'autre macro je cliquais une fois sur un poste et je pouvais le coller autant de fois que je voulais, tandis qu' avec votre code si j'ai plusieurs même poste à coller il faut chaque fois que j'aille rechercher le poste concerné, mais bon si la correction n'est pas trop longue et que vous voulez bien me la faire ce serait le top, si non cela n'est pas trop grave
En tout les cas merci beaucoup de votre dévouement
Cordialement
Avatar
MichD
Le 19/03/20 à 15:56, totontitus a écrit :
Le jeudi 19 Mars 2020 à 20:15 par MichD :
Ton fichier : https://www.cjoint.com/c/JCttoqORw6j
MichD

Bonsoir MichD
Merci bien c'est gentil de votre part de m'avoir aidé, c'est exactement ce que
je voulais mise à part un petit truc qui fonctionnait sur l'autre macro et pas
sur la votre, c'est à dire que sur l'autre macro je cliquais une fois sur un
poste et je pouvais le coller autant de fois que je voulais, tandis qu' avec
votre code si j'ai plusieurs même poste à coller il faut chaque fois que j'aille
rechercher le poste concerné, mais bon si la correction n'est pas trop longue et
que vous voulez bien me la faire ce serait le top, si non cela n'est pas trop
grave
En tout les cas merci beaucoup de votre dévouement
Cordialement

Voir ce fichier : https://www.cjoint.com/c/JCtvtWmDxUj
MichD
Avatar
totontitus
Le jeudi 19 Mars 2020 à 13:22 par totontitus :
Bonjour,
J'ai un code que j'ai récupérer sur le net, qui me permet par
simple clic de copier une cellule, puis par double clic de la coller dans toute
la feuille, par contre est-il possible de modifier ce code de façon
à ne pouvoir utiliser ce collage par double clic que dans une certaine
plage définie ex: A10:B100
Option Explicit
Dim rPrevious As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row < 7 Then
Set rPrevious = Target
Else
End If
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
If Not rPrevious Is Nothing Then
rPrevious.Copy Destination:=Target 'copier les formats (couleur et
bordure)
'Target.Value = rPrevious.Value 'ne pas copier les formats (couleur et
bordure)
End If
End Sub
Merci
Cordilement
Bonjour MichD
Excellent, merci, merci, pour cette correction, c'est juste comme je le souhaitais.
Bonne journée à vous
Cordialement