Microsoft 365 Fonction VBA ActiveWindow.SmallScroll / ActiveWindow.ScrollColumn /

Kaytilou

XLDnaute Nouveau
Bonjour, je me lance dans ma première discussion. Tout d'abord Joyeuse Pâques confinée à tous en espérant que vous allez tous bien ainsi que vos proches.
Je ne suis pas une experte, mais pas tout à fait novice dans la création de code VBA. J'ai créé le code suivant, mais je n'arrive pas tout à fait à utiliser les fonctions ActiveWindow.SmallScroll / ActiveWindow.ScrollColumn.
Mon tableau fait 1000 lignes et je souhaite, dès que j'insère une nouvelle ligne (Bouton Ajouter une ligne avec le code suivant), quelque soit l'endroit ou je me trouve dans le tableau (tableau structuré avec ligne d'entête figée) pouvoir aller à la ligne ajoutée et à la première colonne, pour aller compléter la première cellule du tableau.
Voici mon code (sans doute erreur au niveau en indiquant un numéro de ligne ActiveWindow.SmallScroll Down:=18)

VB:
Sub AjouterLigne()
    ' Aller à la dernière cellule du tableau
        Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Offset(0, 17).Select
    ' Ajouter une ligne
        SELECTION.ListObject.ListRows.Add AlwaysInsert:=False
    'Revenir colonne 1
        ActiveWindow.ScrollColumn = 1
    'Aller à la première cellule à compléter du tableau
        Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Offset(0, 1).Select
    'Aller à la dernière ligne du tableau
        ActiveWindow.SmallScroll Down:=18
End Sub

Je retrouve un peu le meme problème dans la macro Fin du tableau pour aller à la dernière cellule du tableau avec le code suivant

Code Début du tableau
Code:
Sub FinTableau()
     'Aller à la dernière cellule du tableau
        Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Offset(0, 17).Select
    'Aller à la dernière ligne du tableau
        ActiveWindow.SmallScroll Down:=18
    'Aller à la dernière colonne du tableau
        ActiveWindow.ScrollColumn = 17
End Sub

J’insère le fichier si besoin. Les macros se trouvent dans le module 2
Je vous remercie pour votre aide et vous souhaite une agréable journée
 

Pièces jointes

  • Fichier Echeance Test.xlsm
    89.9 KB · Affichages: 8

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Dans le fichier joint modification de votre macro :
VB:
Sub AjouterLigne()
    With Sheets("Base de données").ListObjects("Listing")
        .ListRows.Add AlwaysInsert:=False
        Application.Goto .ListRows.Item(.ListRows.Count).Range, True ' ou false pour ne par remonter le tableau
    End With
End Sub

toute la ligne est sélectionnée avec la première cellule active.

si vous ne voulez sélectionner que la première cellule : Application.Goto .ListRows.Item(.ListRows.Count).Range(1)

Je vous laisse le soin d'explorer les possibilités d' Application.Goto et des objets .ListRows pour vous déplacer en fin de tableau.

Cordialement
 

Pièces jointes

  • Fichier Echeance Test.xlsm
    87.9 KB · Affichages: 7

Staple1600

XLDnaute Barbatruc
Bonjour Kaytilou (Bienvenue sur le forum)

Pour éclairer ta lanterne ;)
VB:
Sub test()
'NL= nouvelle ligne
Dim LO As ListObject, mess$
Set LO = ActiveSheet.ListObjects(1)
With LO.ListRows.Add
    mess = mess & .Range.Address & Chr(13) 'adresse NL
    mess = mess & .Range(1, 1).Address & Chr(13) ' adresse 1ère cellule NL
    mess = mess & .Range(1, 1).Row & Chr(13) 'N° Ligne NL
    mess = mess & .Range(1, LO.DataBodyRange.Columns.Count).Column 'N° colonne NL
End With
MsgBox mess
End Sub

EDITION: Houps, pas rafraîchi à temps!
Bonjour Roblochon ;)
 

Kaytilou

XLDnaute Nouveau
Bonjour,

Dans le fichier joint modification de votre macro :
VB:
Sub AjouterLigne()
    With Sheets("Base de données").ListObjects("Listing")
        .ListRows.Add AlwaysInsert:=False
        Application.Goto .ListRows.Item(.ListRows.Count).Range, True ' ou false pour ne par remonter le tableau
    End With
End Sub

toute la ligne est sélectionnée avec la première cellule active.

si vous ne voulez sélectionner que la première cellule : Application.Goto .ListRows.Item(.ListRows.Count).Range(1)

Je vous laisse le soin d'explorer les possibilités d' Application.Goto et des objets .ListRows pour vous déplacer en fin de tableau.

Cordialement

Bonjour Roblochon, je vous remercie et je vais aller étudier cela de plus près. Auriez vous aussi une astuce pour la deuxième macro Fin du tableau pour aller à la dernière cellule du tableau avec le code suivant. Je pense que j'ai un souci avec la fonction ActiveWindow.SmallScroll Down:=18
VB:
Sub FinTableau()
     'Aller à la dernière cellule du tableau
        Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Offset(0, 17).Select
    'Aller à la dernière ligne du tableau
        ActiveWindow.SmallScroll Down:=18
    'Aller à la dernière colonne du tableau
        ActiveWindow.ScrollColumn = 17
End Sub
Merci à vous
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Bonjour Roblochon, je vous remercie et je vais aller étudier cela de plus près. Auriez vous aussi une astuce pour la deuxième macro Fin du tableau pour aller à la dernière cellule du tableau avec le code suivant. Je pense que j'ai un souci avec la fonction ActiveWindow.SmallScroll Down:=18

Il faut non seulement lire les réponses entièrement, mais le fil également....

Je vous disais :
Je vous laisse le soin d'explorer les possibilités d' Application.Goto et des objets .ListRows pour vous déplacer en fin de tableau.
Or visiblement vous n'avez rien tenté...

et mon ami @Staple1600 vous a fait un exercice de test qui vous sera précieux si vous daignez l'examiner.

Bonne étude
 

Staple1600

XLDnaute Barbatruc
Re

•>Roblochon
Pigé!
ADD=Attestation de Déplacement Dérogatoire
Ah le neurone confiné, c'est comme le lait de soja non réfrigéré
Cela fermente et c'est dangereux!
1) pour le sol de la cuisine
2) pour capter dans la seconde ce qu'on lit
;)
 

Kaytilou

XLDnaute Nouveau
Bonjour à toi aussi Kaytilou

•>Kaytilou
Qu'il est doux et agréable d'être superbement ignoré par les nouveaux arrivants.... :rolleyes:

•>Roblochon
ADD, may be ?
Parce que c'est clairement pas,, Excel étant aquaphobe ;)

Bonsoir Staple1600
Désolée, je ne voulais pas être impolie et bien sur merci pour votre aide. Je teste petit à petit, donc j'ai commencé par la réponse de Roblochon avant de tester la votre
J'y vais de ce pas :) merci à vous et très bonne fin de journée
 

Kaytilou

XLDnaute Nouveau
Re,



Il faut non seulement lire les réponses entièrement, mais le fil également....

Je vous disais :

Or visiblement vous n'avez rien tenté...

et mon ami @Staple1600 vous a fait un exercice de test qui vous sera précieux si vous daignez l'examiner.

Bonne étude
Bonsoir Roblochon, comme je vous le disais, je suis ni experte, ni novice. Je vais pas à pas et je m'en vais d'ici là explorer les possibilités d' Application.Goto et des objets .ListRows. Merci à vous
 

Discussions similaires

Statistiques des forums

Discussions
312 514
Messages
2 089 222
Membres
104 066
dernier inscrit
charlene1605