XL 2021 Je voudrais "figé" mon écran après saisie des données

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 !

Patrick BRZ

XLDnaute Nouveau
Bonjour le Forum et merci à vous pour votre aide

Comme indiqué dans le titre, je souhaiterai pouvoir bloquer l'écran une fois le lancement de la macro qui me remet toujours à la ligne 1.

Je joins un fichier avec cette macro.

Avec mes remerciements
pATRICK
 

Pièces jointes

Si j'ai bien compris, tu veux afficher la dernière ligne.

Si c'est bien cela, @TooFatBoy t'as donné en partie la solution.

code à mettre dans le module de la feuille.
VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim dl As Long
  
    If Not Intersect(Target, ActiveSheet.Range("C6,C9,C12,C15")) Is Nothing Then
        ' Trouver la dernière ligne non vide dans la colonne I
        dl = ActiveSheet.Cells(ActiveSheet.Rows.Count, "I").End(xlUp).Row
      
        ' Faire défiler la feuille vers la dernière ligne non vide
        Application.Goto ActiveSheet.Cells(dernièreLigne, "I")
    End If
End Sub

Enfin, si j'ai bien compris la demande.

edit: le code s'execute au changement des cellules C6,C9,C12 et C15
 
Re le forum et à vous tous

Comme je l'ai dit plus haut, je ne connais pas beaucoup de chose aux macros. Je ne vois pas où le placer... je l'ai mise à l'issue de celle que j'avais élaborée. mais cela ne fait rien. Si tu peux me montrer avec mon dernier fichier joint un peu plus haut ; classeur1111111111111
Je te remercie d'avance
Patrick
 
J'ai pu ouvrir tes classeurs :
- celui de #1 ne sert pas à grand chose puisqu'il y a juste le code d'une macro, mais que ce code n'est même pas dans une macro mais dans une feuille du classeur... 🤪
- celui de #9 est inutile puisque c'est le même qu'en #1.
- celui de #12 est guère plus utile puisqu'il ne contient aucune macro... 🙃 mais au moins on voit l'architecture de la feuille. 😉

En ce qui concerne le code de la macro, il est toujours bon de l'indenter correctement car ça simplifie la lecture.


Le mieux aurait été d'avoir directement un classeur anonymisé représentatif de ton vrai classeur, avec les macros à l'intérieur, et des explications claires sur le forum. (ce sera pour la prochaine fois 😉)

Mais je crois que j'ai tout de même compris ce que tu veux faire, et il n'y a apparemment aucune raison de "défiger" les volets, et encore moins de raison de figer la feuille (bien au contraire, il faut scroller la feuille pour afficher la partie désirée).

Une proposition basée sur ta macro initiale :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim NewLine As Long

    If Target.Address = "$C$15" And Range("C15") <> "" Then
        Application.ScreenUpdating = False          ' On interdit le rafraîchissement de l'affichage de la feuille
        NewLine = Range("I1").End(xlDown).Row + 1   ' Calcule la dernière ligne (/!\ Les cellules I1 et I2 ne doivent PAS être vides !)
        ActiveWindow.ScrollRow = NewLine - 3        ' Déplace l'affichage à la ligne désirée (exemples : NewLine, NewLine-1, NewLine-3, etc.)
        Cells(NewLine, 9) = Date - 1
        Cells(NewLine, 10) = Range("C6")
        Cells(NewLine, 11) = Range("C9")
        Cells(NewLine, 14) = Range("C13")
        Cells(NewLine, 15) = Range("C15")
    End If

End Sub
 

Pièces jointes

Dernière édition:
Re le forum et à vous tous

Comme je l'ai dit plus haut, je ne connais pas beaucoup de chose aux macros. Je ne vois pas où le placer... je l'ai mise à l'issue de celle que j'avais élaborée. mais cela ne fait rien. Si tu peux me montrer avec mon dernier fichier joint un peu plus haut ; classeur1111111111111
Je te remercie d'avance
Patrick
Si tu avais joint un fichier xlsm. C'est à dire avec la macro qu tu avais élaboré.

J'aurais ajouté la mienne. Tu avais bien placé la tienne.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim i As Long, dl As Long
   Application.ScreenUpdating = False
   If Target.Address = "$C$15" And Range("C15") <> "" Then
      For i = 3 To 500
         If Cells(i, 9) = "" Then        'colonne  date
            Cells(i, 9) = Date - 1
            Cells(i, 10) = Range("C6")
            Cells(i, 11) = Range("C9")
            Cells(i, 14) = Range("C13")
            Cells(i, 15) = Range("C15")
            Exit For
         End If
      Next i
   End If
   Application.ScreenUpdating = True

dl = ActiveSheet.Cells(ActiveSheet.Rows.Count, "I").End(xlUp).Row
Application.Goto ActiveSheet.Cells(dernièreLigne, "I")

End Sub
 
Si j'ai bien compris, tu veux afficher la dernière ligne.

Si c'est bien cela, @TooFatBoy t'as donné en partie la solution.

code à mettre dans le module de la feuille.
VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim dl As Long
  
    If Not Intersect(Target, ActiveSheet.Range("C6,C9,C12,C15")) Is Nothing Then
        ' Trouver la dernière ligne non vide dans la colonne I
        dl = ActiveSheet.Cells(ActiveSheet.Rows.Count, "I").End(xlUp).Row
      
        ' Faire défiler la feuille vers la dernière ligne non vide
        Application.Goto ActiveSheet.Cells(dernièreLigne, "I")
    End If
End Sub

Enfin, si j'ai bien compris la demande.

edit: le code s'execute au changement des cellules C6,C9,C12 et C15
Bonjour le Forum et à vous cathodique et toofatboy
La macro ci-dessus bloque dès le premier chiffre entré en C6 et il faut débloquer la macro
Je ne comprends pas. Je te joins le fichier avec la macro tu verra par toi-même
Je vous remercie pour le temps que vous me consacrez.
La macro de TFB fonctionne je vais faire en sorte pour que mes calculs s’intègrent.
 

Pièces jointes

Bonjour le Forum et à vous cathodique et toofatboy
La macro ci-dessus bloque dès le premier chiffre entré en C6 et il faut débloquer la macro
Je ne comprends pas. Je te joins le fichier avec la macro tu verra par toi-même
Je vous remercie pour le temps que vous me consacrez.
La macro de TFB fonctionne je vais faire en sorte pour que mes calculs s’intègrent.
erreur de copier/coller

ton fichier corrigé en retour
 

Pièces jointes

- 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

Retour