Initialisation d'un userform. Copie de ligne évènementielle
Coucou all. Je suis toujours dans la création d'utilitaires et j'ai un soucis :
J'ai un userform qui dans sa procédure coupe la ligne active et la colle en ligne7.
En résumé :
* Si je suis en ligne 7, message d'erreur car je ne peux pas copier des données et les coller au même endroit.
DONC je veux mettre une condition :
* Si j'ai mon cruseur en F7, alors je fais mon userform en sautant la partie "copie/colle". Si j'ai pas mon curseur en F7, par exemple en F9, alors je coupe la ligne 9, je l'insère en ligne 7, et je fais ma procédure.
mon code actuel le point 1 que j'ai expliqué plus haut est réglé : plus de message d'erreur. PAR CONTRE le point 2 est pas réglé.
Private Sub UserForm_Initialize()
ActiveSheet.Unprotect
If Not ActiveCell = Range("F7") Then
Rows(ActiveCell.Row).Select
Selection.Cut
Rows("7:7").Select
Selection.Insert Shift:=xlDown
[...]
Range("A7").Select
Selection.Copy
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("F7").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Else
[...]
Range("A7").Select
Selection.Copy
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("F7").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End Sub
Une idée pour régler le soucis?
merciiii
Bonjour Atro, bonjour le forum,
Pas très clair ! Tu dis que ça ne fonctionne pas, puis tu dis que c'est réglé. Tu parles de B7 puis tu codes F7
If Not ActiveCell = Range("F7") Then
Tu veux faire référence à une cellule et tu utilises (implicitement) sa propriété Value (propriété par défaut). Il faudrait :
If ActiveCell.Address <> "$F$7" Then
ou :
If ActiveCell.row <> 7 Then
Je pense que tu devrais revoir tes explications ou ton code...
J'avais fais une erreur dans l'explication j'ai edit.
* Si je suis en ligne 7, message d'erreur car je ne peux pas copier des données et les coller au même endroit.
DONC je veux mettre une condition :
* Si j'ai mon cruseur en F7, alors je fais mon userform en sautant la partie "copie/colle". Si j'ai pas mon curseur en F7, par exemple en F9, alors je coupe la ligne 9, je l'insère en ligne 7, et je fais ma procédure.
mon code actuel le point 1 que j'ai expliqué plus haut est réglé : plus de message d'erreur. PAR CONTRE le point 2 est pas réglé.
Re,
Donc utilise :
If ActiveCell.Row = 7 Then
'ne fait rien
Else
'agit
End If
Même avec cette solution j'ai le soucis. Mais j'ai percuté après, du coup j'ai retiré de mon initialise et j'ai intégré à l'appel de l'userform :ThauThème a écrit :Re,
Donc utilise :
If ActiveCell.Row = 7 Then 'ne fait rien Else 'agit End If
Sub edit()
If ActiveCell.Row <> 7 Then
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Rows(ActiveCell.Row).Select
Selection.Cut
Rows("7:7").Select
Selection.Insert Shift:=xlDown
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
UserForm2.Show 0
Else
UserForm2.Show 0
End If
End Sub
Private Sub UserForm_Initialize()
ActiveSheet.Unprotect
Me.Label1.Caption = "Créé le " & Range("B7")
TextBox3 = Range("D7")
TextBox2 = Range("E7")
TextBox1 = Range("C7")
If Range("H7") = 1 Then Me.OptionButton3.Value = True
If Range("H7") = 2 Then Me.OptionButton2.Value = True
If Range("H7") = 3 Then Me.OptionButton1.Value = True
Range("B7").Select
Selection.Copy
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("F7").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End Sub
Du coup si quelqu'un sait pourquoi ça marche pas en initialise je veux bien l'explication ^^
merci @Thauthème en tout cas
Re,
Difficile déjà de comprendre sans le fichier qui va bien, alors d'expliquer !...
Même si ça na pas de rapport, il y a une chose que tu dois éviter absolument, ce sont les Select inutiles. Le code :
Range("B7").Select
Selection.Copy
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Peut s'écrire :
Range("B7").Copy
Range("C1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False