Microsoft 365 insertion ligne et positionnement curseur

  • Initiateur de la discussion Initiateur de la discussion Tartine
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
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
 
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


à+ 😉
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
281
Réponses
4
Affichages
459
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
477
Réponses
15
Affichages
784
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
649
Retour