Microsoft 365 insertion ligne et positionnement curseur

Tartine

XLDnaute Nouveau
Bonjour,
J'ai créée un bouton pour ajouter une ligne, je voudrais y associer un code pour que le curseur de la souris se positionne automatiquement en début de cette ligne insérée.
Voici mon codage :

VB:
Sub Bouton1_Cliquer()

Dim DLig As Long
With ActiveSheet
.Unprotect
    DLig = .Range("B" & Rows.Count).End(xlUp).Row
Dim i%
i = [Ligne_total_amort].Row - 1
With Rows(i)
   .Copy
   .Insert Shift:=xlDown
   .Hidden = False
End With
Application.CutCopyMode = False

    End With
   

End Sub
 
Dernière modification par un modérateur:
Solution
Bonjour @Tartine et bienvenu sur XLD

Sans fichier pour voir ton code qui me semble tortueux je te propose ceci

VB:
Sub Bouton1_Cliquer()

Dim DLig As Long
With ActiveSheet
    .Unprotect
    DLig = .Range("B" & Rows.Count).End(xlUp).Row
    Dim i%
    i = [Ligne_total_amort].Row - 1
    With Rows(i)
        .Copy
        .Insert Shift:=xlDown
        .Hidden = False
    End With
    Application.CutCopyMode = False
    Range("A" & i + 1).Select
End With

End Sub

Tu déproteges ta feuille mais tu ne la reproteges pas !!! Bizarre

Avec ton fichier et une explication de ce que tu veux faire serais largement plus efficace ......

Merci de ton retour

@Phil69970

Phil69970

XLDnaute Barbatruc
Bonjour @Tartine et bienvenu sur XLD

Sans fichier pour voir ton code qui me semble tortueux je te propose ceci

VB:
Sub Bouton1_Cliquer()

Dim DLig As Long
With ActiveSheet
    .Unprotect
    DLig = .Range("B" & Rows.Count).End(xlUp).Row
    Dim i%
    i = [Ligne_total_amort].Row - 1
    With Rows(i)
        .Copy
        .Insert Shift:=xlDown
        .Hidden = False
    End With
    Application.CutCopyMode = False
    Range("A" & i + 1).Select
End With

End Sub

Tu déproteges ta feuille mais tu ne la reproteges pas !!! Bizarre

Avec ton fichier et une explication de ce que tu veux faire serais largement plus efficace ......

Merci de ton retour

@Phil69970
 

patricktoulon

XLDnaute Barbatruc
Bonjour @Tartine , @Phil69970

Insérer une ligne avant la dernière utilisée en colonne "B"
et positionner le carret (mode Edition de la cellule)en effaçant la donnée copiée de la new cell en "B"
VB:
Sub Next_LastCellCarret()
    Dim LastLig&
    With ActiveSheet
        '.Unprotect
        LastLig = .Cells(Rows.Count, "B").End(xlUp).Row
        With Rows(LastLig)
            .Copy: .Insert Shift:=xlDown: .Hidden = False
        End With
        Application.CutCopyMode = False
        .Cells(LastLig, "B").Select
    End With
    CreateObject("wscript.shell").SendKeys "{DELETE 100} {F2} {left 100}"
End Sub



OPTIONS
si l'on veut pas effacer la donnée il faut retirer {DELETE 100}
si l'on veut pas revenir au debut du texte il faut retirer {left 100}

pour cet exemple ,je ne me suis pas occupé du unprotect/protect


à+ ;)
 

Tartine

XLDnaute Nouveau
Bonjour @Tartine et bienvenu sur XLD

Sans fichier pour voir ton code qui me semble tortueux je te propose ceci

VB:
Sub Bouton1_Cliquer()

Dim DLig As Long
With ActiveSheet
    .Unprotect
    DLig = .Range("B" & Rows.Count).End(xlUp).Row
    Dim i%
    i = [Ligne_total_amort].Row - 1
    With Rows(i)
        .Copy
        .Insert Shift:=xlDown
        .Hidden = False
    End With
    Application.CutCopyMode = False
    Range("A" & i + 1).Select
End With

End Sub

Tu déproteges ta feuille mais tu ne la reproteges pas !!! Bizarre

Avec ton fichier et une explication de ce que tu veux faire serais largement plus efficace ......

Merci de ton retour

@Phil69970
Super ta réponse qui a résolu mon problème.
Pour l'instant la feuille n'est pas encore protégée parce que le tableau est à l'état de conception. Effectivement il faudra que je rajoute la re-protection de la feuille de calcul.
Merci encore pour ta réactivité
Bonne journée
 

Tartine

XLDnaute Nouveau
Bonjour @Tartine , @Phil69970

Insérer une ligne avant la dernière utilisée en colonne "B"
et positionner le carret (mode Edition de la cellule)en effaçant la donnée copiée de la new cell en "B"
VB:
Sub Next_LastCellCarret()
    Dim LastLig&
    With ActiveSheet
        '.Unprotect
        LastLig = .Cells(Rows.Count, "B").End(xlUp).Row
        With Rows(LastLig)
            .Copy: .Insert Shift:=xlDown: .Hidden = False
        End With
        Application.CutCopyMode = False
        .Cells(LastLig, "B").Select
    End With
    CreateObject("wscript.shell").SendKeys "{DELETE 100} {F2} {left 100}"
End Sub



OPTIONS
si l'on veut pas effacer la donnée il faut retirer {DELETE 100}
si l'on veut pas revenir au debut du texte il faut retirer {left 100}

pour cet exemple ,je ne me suis pas occupé du unprotect/protect


à+ ;)
Merci beaucoup pour ton retour.
La solution de Phil69970 a fonctionné parfaitement, mais je garde de côté la tienne qui pourra certainement me servir dans l'avenir.
Très bonne journée
 

Discussions similaires

Réponses
2
Affichages
215

Statistiques des forums

Discussions
312 155
Messages
2 085 811
Membres
102 986
dernier inscrit
nonoblez