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
ThauThème a écrit :

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 :
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
Rechercher des sujets similaires à "initialisation userform copie ligne evenementielle"