Bonjour à tous.
J'aimerai savoir s'il existe une instruction qui permet de retourner la référence de la cellule en haut à gauche de ma plage affichée sur l'écran, et une autre pour retourner celle en bas à gauche.
Merci d'avance.
Bonjour à tous.
J'aimerai savoir s'il existe une instruction qui permet de retourner la référence de la cellule en haut à gauche de ma plage affichée sur l'écran, et une autre pour retourner celle en bas à gauche.
Merci d'avance.
Bonjour
Je suppose que tu veux dire "Feuille de calcul" et non "plage"
Commence par voir la première visible en haut et à gauche
Edit : maintenant que tu sais qu'il s'agit là de membres de l'objet ActiveWindow, je te laisse le soin de faire comme moi --->>
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox ActiveWindow.ScrollRow & " " & ActiveWindow.ScrollColumn
Réflexe --->> ActiveWindow est un objet Window ? -->> Amen --->>ouverture de mon aide interne VBA à la rubrique Window, objet -->> un click sur Membres de l'objet Window -->> je lis tous les membres car j'ignore si l'un d'entre eux peut me retourner l'adresse de la plage visible à l'écran --->>
J'ai de la chance : je vois qu'existe une propriété VisibleRange dp,t le nom est suffisamment évocateur -->> je clique dessus --->> Window.Visible, propriété --->> Ah ! C'est bien cela --->> je l'essaye donc --->>
Hé oui ! C'est bien cela.MsgBox ActiveWindow.VisibleRange.Address
Apprends le plus vite possible à faire comme moi.![]()
bonsoir
pour celle d'en bas c'est un peu plus compliqué a partir du moment ou en vois une parti (meme incomplete) elle est considérée comme visible
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox ActiveWindow.VisibleRange.Cells(1).Address 'donne l'addresse de la premiere cellule visible en haut a gauche
mettre -2 a la place de -1 si il faut
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Sub test() With ActiveWindow.VisibleRange MsgBox .Cells(1).Address 'donne l'addresse de la premiere cellule visible en haut a gauche MsgBox .Cells(1).Offset(.Rows.Count - 1, .Column).Address 'donne l'addresse de la derniere cellule visible en bas a gauche End With End Sub
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer :: ça peut servir aux autres
et n'oublie pas de voter
Unparia : j'essaie toujours, mais je suis souvent paumé avec l'aide Microsoft, qui est à peu près tout, sauf facile.
Patricktoulon. J'ai testé ton code, que j'ai un peu modifié, mais sans en changer le réel contenu. et j'ai un petit problème. Tant que ma cellule en haut à gauche est A1, tout va bien, comme on peut le voir sur la première image
Par contre, lorsque je me déplace dans ma feuille de calcul, le résultat affiché reste le même.
J'ai donc mixé vos deux réponses, pour arriver à :
Qui semble donner les résultats escomptés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 P_Ligne = ActiveWindow.ScrollRow P_Colonne = ActiveWindow.ScrollColumn D_ligne = P_Ligne + Cells(1).Offset(ActiveWindow.VisibleRange.Rows.Count - 1, ActiveWindow.VisibleRange.Columns.Count - 1).Row D_Colonne = P_Colonne + Cells(1).Offset(ActiveWindow.VisibleRange.Rows.Count - 1, ActiveWindow.VisibleRange.Columns.Count - 1).Column
Un grand merci à vous deux.
le poisson dont je ne vois que la tête est un poisson visible.
Je ne vois nulle part l'adverbe "entièrement" dans le message du demandeur.
Quant au reste --->>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 toto = Split(Replace(ActiveWindow.VisibleRange.Address, ":", ""), "$") MsgBox "en haut à gauche : " & toto(1) & toto(2) & vbCrLf & _ "en haut à droite : " & toto(3) & toto(2) & vbCrLf & _ "en bas à gauche : " & toto(1) & toto(4) & vbCrLf & _ "en bas à droite : " & toto(3) & toto(4)
@unparia.
Wow ! ok, ca, c'est effectivement une réponse exhaustive, et extrêmement élégante (beaucoup plus que la mienne, il faut l'avouer). Le seul souci, c'est que là, même avec l'aide Windows, je ne comprend pas ce que fait ton code. On est très clairement au delà de mes compétences. Je suis jaloux.
Encore merci pour ton aide (je vais quand même essayer de comprendre ce toto, parce que c'est vraiment beau, comme solution).
Tu le comprendras en faisant ces tout-petites expériences :je ne comprend pas ce que fait ton code.
le reste est évident, non ? (de simples concaténations des divers éléments de l'array tata
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Dim titi As String titi = Range("C2:D4").Address MsgBox titi ' --->> tu obtiens la chaîne de caractères "$C$2:$D$4" titi = Replace(titi, ":", "") MsgBox titi '---->> tu obtiens la chaîne de caractères "$C$2$D$4) -->> aide vba sur fonction Replace tata = Split(titi, "$") ' --->> aide vba sur fonction split (retourne un array de valeurs) For i = 1 To UBound(tata) MsgBox tata(i) ' --->> aide vba sur boucle For to Next et sur ubound Next
Partager