XL 2010 copie plage par double clic (Résolu)

Kael_88

XLDnaute Occasionnel
Le forum,

Quand je double-clic dans la Feuille A sur une cellule de la colonne B, toute la ligne de cette cellule est copiée sur la feuille B

Est il possible de ne sélectionner que la plage de C à F de cette ligne ?

ci dessous le code que j'utilise actuellement.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim WsSEr As Worksheet
Set WsSEr = Sheets("Synthèse Erreur") 'Feuil source

Application.ScreenUpdating = False
If Target.Column <> 2 Then Exit Sub 'si le double-clic n'est pas dans la colonne 2, sort de la procédure
Cancel = True 'évite le mode [Édition] lié au double-clic

Rows(Target.Row).Copy Destination:=WsSEr.Range("A" & WsSEr.Range("A" & Rows.Count).End(xlUp).Row + 1)

Application.ScreenUpdating = True

MsgBox ("Le transfert de la ligne a été fait") 'previent ligne copiée

Application.CutCopyMode = False 'annule le clignotement dû au "Copier"
End Sub

Merci de votre cooperation
 

youky(BJ)

XLDnaute Barbatruc
Bonjour Kael,
Tu peux essayer comme cela (collage que texte sans format)
Bruno
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 2 Then Exit Sub 'si le double-clic n'est pas dans la colonne 2, sort de la procédure
Cancel = True 'évite le mode [Édition] lié au double-clic
with Sheets("Synthèse Erreur")
bas=.[A6500].end(3).row+1
lig=target.row
.range("A" & bas & ":D" & bas).value=range("C" & lig & "F" & lig).value
End with
MsgBox ("Le transfert de la ligne a été fait") 'previent ligne copiée
End Sub
 

Si...

XLDnaute Barbatruc
Bon_soir
code dans la feuille source, l'onglet cible étant Feuil2
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal R As Range, Cancel As Boolean)
  If Intersect(R, [B:B]) Is Nothing Or R = "" Then Exit Sub
  R(1, 2).Resize(, 4).Copy Feuil2.Cells(Feuil2.Rows.Count, 1).End(xlUp)(2)
  R(2, 1).Select
End Sub
 

Kael_88

XLDnaute Occasionnel
Le forum, youky(BJ),

Merci de vos réponses,

youky(BJ) :

toujours rien sauf l'erreur (meme en declarant les Bas et Lig et en retirant les ":" devant "D"

.Range("A" & bas & "D" & bas).Value = Range("C" & lig & "F" & lig).Value

Si... :

Fonctionne bien mais ne renvoie pas toutes les valeurs des cellules.

exemple: cellule "C" j'ai "Eco 212" ca renvoi "Eco 212" par contre si cellule "C" j'ai "Eco 212 ca renvoi "Eco 212" la valeur en dessous à disparu.
Delta 13"
saurais tu pourquoi, et aurais tu une solution?

Cordialement
 

youky(BJ)

XLDnaute Barbatruc
VB:
.Range("A" & bas & ":D" & bas).Value = Range("C" & lig & ":F" & lig).Value
re:
rectifie la ligne comme ceci
J'avais oublié le dernier ":" et j'avais pas testé car pas de fichier
.Range("A" & bas & ":D" & bas).Value = Range("C" & lig & ":F" & lig).Value
Bruno
 

Kael_88

XLDnaute Occasionnel
Le forum, youky(BJ),Si... ,

Merci à vous deux pour vos solutions,

youky(BJ) :
la solution avec ta rectification fonctionne nickel.
si je peux abuser un peu, quand le renvoie est fait, peut on colorer la case du double click ?

merci encore pour vos solutions
 

youky(BJ)

XLDnaute Barbatruc
Yes,
Ajoute la ligne en gras
Target.Interior.Color = 65535
MsgBox ("Le transfert de la ligne a été fait") 'previent ligne copiée
End Sub

Pour facilement trouver le N° de couleur mets la couleur souhaitée dans une cellule et bouge plus de la selection
en vba>affichage>fenêtre-Exécution >écrit ?Selection.Interior.Color et fait Entrer
A la place du point d'interrogation on peut mettre Print
Bruno
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 009
Membres
101 865
dernier inscrit
MLL