Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 11 And Target.Row Then Target.Offset(0, -2).ClearContents (Message debogueur feuille protégée).Effectivement les lignes au-dessus de la ligne concernée (target.row) sont protégées une fois validées.
J'ai absolument besoin de protéger chaque ligne qui a été validée : Au niveau de Target.offset, y a t il possibilité de spécifier que le (0, -2) s'applique uniquement sur la ligne concernée (target.row) qui elle n'est pas encore validée et protégée par "Protect".
Bonjour,
Voila ma ligne de commande sur la feuille 3
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Then
Range(Target, Target.Offset(0, 2)).Copy Sheets("Feuil4").Range("A1")
Sheets("Feuil4").Activate
End If
End Sub
Feuil3
1
France
2
Autralie
3
Etat-Unis
4
Belgique
5
Espane
6
Allemagne
7
Suisse
8
Viet Nam
0
Normalement, quand je clic sur A4 (4, Belgique) je devrais avoir sur Feuil4 en A1 et B1 la même chose. Or, sur B1 ça me renvoie systématiquement France !
Pourquoi ?
Où est l'erreur ?
@Ommagawi , bienvenue sur Xld, tu n'aurais pas dû déterrer un fil de 2008 pour cela mais faire une nouvelle discussion.
essayes avec ce code
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Then
Target.Range("A1:C1").Copy Sheets("Feuil4").Range("A1")
Sheets("Feuil4").Activate
End If
End Sub
Sans cela, comme c'est ton premier post, je te conseille un détour par la Charte Xld qui t'apprendra les us et coutumes du forum.
@Ommagawi , bienvenue sur Xld, tu n'aurais pas dû déterrer un fil de 2008 pour cela mais faire une nouvelle discussion.
essayes avec ce code
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Then
Target.Range("A1:C1").Copy Sheets("Feuil4").Range("A1")
Sheets("Feuil4").Activate
End If
End Sub
Sans cela, comme c'est ton premier post, je te conseille un détour par la Charte Xld qui t'apprendra les us et coutumes du forum.
Merci Yeahou
J'ai oublié de préciser que les pays viennent d'une autre feuille Pays ! Apparemment ça ne marche pas !
Je prends connaissance de la charte tout de suite.
Encore merci.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Then
Sheets("Feuil4").Range("A1:D1") = Target.Resize(, 4).Value
Sheets("Feuil4").Activate
End If
End Sub
Quand je rajoute Feuil6.[D1].FormulaR1C1 = "=OFFSET(Pays!R1C1,RC3,0)"
le résultat me renvoi "=OFFSET(Pays!R1C1,RC3,0)" en colonne D Pays.
Si je rajoute devant
VB:
et
derrière, je reçois le msg
erreur compilation
Attendu fin d'instruction
[/code] est surligné en bleu !
note que "Feuil4" est vide ; va sur "Feuil3", et en colonne A,
fait un double-clic sur la valeur de ton choix.
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim lg1&, lg2&: Cancel = True
With Target
If .CountLarge > 1 Then Exit Sub
If .Column <> 1 Then Exit Sub
If .Value = "" Then Exit Sub
lg1 = .Row
End With
With Worksheets("Feuil4")
lg2 = .Cells(Rows.Count, 1).End(3).Row + 1
If IsEmpty(.[A1]) Then lg2 = lg2 - 1
Cells(lg1, 1).Resize(, 4).Copy
.Cells(lg2, 1).PasteSpecial -4163
Application.CutCopyMode = 0
Application.Goto .[F1]: .Select
End With
End Sub
si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis.
Bonjour soan,
Ton code fonctionne mais le résultat ne se met pas dans la ligne 1.
A chaque demande ça incrémente une nouvelle ligne et je souhaiterai que la réponse écrase la précédente.
Est ce possible ?
Et merci à tous de vous être intéressé à ma problématique.
Je ne comprends pas de quoi vous parlez. Sur le classeur que vous aviez joint ça met en 'Feuil4'!D1 :
Code:
=DECALER(Pays!$A$1;$C1;0)
Dans le module de l'objet Worksheet Feuil5 qui resprésente la feuille Excel "Feuil3" :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Then
Target.Range("A1:C1").Copy Sheets("Feuil4").Range("A1")
Sheets("Feuil4").Activate
Feuil6.[D1].FormulaR1C1 = "=OFFSET(Pays!R1C1,RC3,0)"
End If
End Sub
Remarque: Feui6 est l'objet Worksheet qui représente la feuille Excel "Feuil4"
tu as écrit : « je souhaiterai que la réponse écrase la précédente. Est ce possible ? »
oui, c'est fait dans le fichier joint.
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim lig&: Cancel = True
With Target
If .CountLarge > 1 Then Exit Sub
If .Column <> 1 Then Exit Sub
If .Value = "" Then Exit Sub
lig = .Row
End With
With Worksheets("Feuil4")
Cells(lig, 1).Resize(, 4).Copy: .[A1].PasteSpecial -4163
Application.CutCopyMode = 0: Application.Goto .[F1]
.Select
End With
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Then
Sheets("Feuil4").Range("A1:D1") = Target.Resize(, 4).Value
Sheets("Feuil4").Activate
End If
End Sub
Encore une question,
Voila mon code
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Then
Sheets("Feuil4").Range("A11") = Target.Resize(, 4).Value
Sheets("Feuil4").Activate
End If
End Sub
Je voudrais que Target.Colomn= 4
et que les cellules copier soient les quatre précédentes et pas les quatre suivantes.
Est ce possible ?
Donc vous utilisez ma solution, c'est simple, voyez le fichier (2) avec :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 4 Then
Sheets("Feuil4").Range("A1:D1") = Target(1, -2).Resize(, 4).Value
Sheets("Feuil4").Activate
End If
End Sub