Bonjour à tous
Ayant récupéré sur un forum, du code pour détecter la résolution de mon
écran, je voudrais écrire une macro "hauteur_lignes()" qui adapterait la
hauteur des lignes comprises entre > 4 et < 35 à ce qui reste de la
résolution quand on y déduit les 4 premières lignes.
N'arrivant pas à faire cela d'une manière excellente, j'ai
arbitrairement déterminé la hauteur de ces 4 lignes (à préserver) à 256
points ( variable zoneHaut)
Quand je divise le reste de ma résolution (variable zone_modifiee) par
le nombre d'élèves pour trouver la hauteur des lignes que je veux
modifier, j'obtiens une hauteur de ligne qui sort de l'écran, quand
j'exécute la macro.
Bref! je patauge.
Si vous aviez une réponse... ou une astuce...
Merci d'avance
elect
PS: Je cherche à faire ça pour utiliser le fichier sur d'autres ordi qui
n'ont pas forcément la même résolution.
Option Explicit 'JCGL : Merci à la communauté XL pour ce code : je ne
sais plus où je l'ai trouvé...
Option Private Module
Type RECT
x1 As Long
y1 As Long
x2 As Long
y2 As Long
End Type
Declare Function GetDesktopWindow Lib "User32" () As Long
Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long,
rectangle As RECT) As Long
'Calcul de la resolution
Function GetScreenResolution() As String
Dim R As RECT
Dim hWnd As Long
Dim RetVal As Long
hWnd = GetDesktopWindow()
RetVal = GetWindowRect(hWnd, R)
GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)
End Function
'Agrandi les lignes comprises entre 5 et 34 pour les ajuster à la résolution
Sub hauteur_lignes()
Dim Hauteur As Variant, Resolution As String, zoneHaut As Variant
Dim zone_modifiee As Variant, Nb_Eleves As Byte, Haut_Row As Double
Dim rw As Variant
Resolution = GetScreenResolution ' Récupère par API la résolution ecran
Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1) ' Prend la
hauteur
zoneHaut = 256 'zone à ne pas toucher
zone_modifiee = Hauteur - zoneHaut
Nb_Eleves = 30
Haut_Row = zone_modifiee / Nb_Eleves
For Each rw In ActiveSheet.Rows
If rw.Row > 4 And rw.Row < 35 Then
rw.RowHeight = Haut_Row
End If
Next rw
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Mishell
Bonjour. Tu peux peut-être jouer avec le Zoom offert dans le menu Affichage.
Rows("1:17").Select ActiveWindow.Zoom = True
Mishell
"elect31" wrote in message news:
Bonjour à tous Ayant récupéré sur un forum, du code pour détecter la résolution de mon écran, je voudrais écrire une macro "hauteur_lignes()" qui adapterait la hauteur des lignes comprises entre > 4 et < 35 à ce qui reste de la résolution quand on y déduit les 4 premières lignes. N'arrivant pas à faire cela d'une manière excellente, j'ai arbitrairement déterminé la hauteur de ces 4 lignes (à préserver) à 256 points ( variable zoneHaut) Quand je divise le reste de ma résolution (variable zone_modifiee) par le nombre d'élèves pour trouver la hauteur des lignes que je veux modifier, j'obtiens une hauteur de ligne qui sort de l'écran, quand j'exécute la macro. Bref! je patauge. Si vous aviez une réponse... ou une astuce... Merci d'avance elect
PS: Je cherche à faire ça pour utiliser le fichier sur d'autres ordi qui n'ont pas forcément la même résolution.
Option Explicit 'JCGL : Merci à la communauté XL pour ce code : je ne sais plus où je l'ai trouvé... Option Private Module Type RECT x1 As Long y1 As Long x2 As Long y2 As Long End Type
Declare Function GetDesktopWindow Lib "User32" () As Long Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long, rectangle As RECT) As Long 'Calcul de la resolution Function GetScreenResolution() As String Dim R As RECT Dim hWnd As Long Dim RetVal As Long hWnd = GetDesktopWindow() RetVal = GetWindowRect(hWnd, R) GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1) End Function
'Agrandi les lignes comprises entre 5 et 34 pour les ajuster à la résolution Sub hauteur_lignes() Dim Hauteur As Variant, Resolution As String, zoneHaut As Variant Dim zone_modifiee As Variant, Nb_Eleves As Byte, Haut_Row As Double Dim rw As Variant Resolution = GetScreenResolution ' Récupère par API la résolution ecran Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1) ' Prend la hauteur zoneHaut = 256 'zone à ne pas toucher zone_modifiee = Hauteur - zoneHaut Nb_Eleves = 30 Haut_Row = zone_modifiee / Nb_Eleves For Each rw In ActiveSheet.Rows If rw.Row > 4 And rw.Row < 35 Then rw.RowHeight = Haut_Row End If Next rw End Sub
Bonjour.
Tu peux peut-être jouer avec le Zoom offert dans le menu Affichage.
Rows("1:17").Select
ActiveWindow.Zoom = True
Mishell
"elect31" <rg31@free.fr> wrote in message
news:enbktWX9JHA.5780@TK2MSFTNGP03.phx.gbl...
Bonjour à tous
Ayant récupéré sur un forum, du code pour détecter la résolution de mon
écran, je voudrais écrire une macro "hauteur_lignes()" qui adapterait la
hauteur des lignes comprises entre > 4 et < 35 à ce qui reste de la
résolution quand on y déduit les 4 premières lignes.
N'arrivant pas à faire cela d'une manière excellente, j'ai arbitrairement
déterminé la hauteur de ces 4 lignes (à préserver) à 256 points ( variable
zoneHaut)
Quand je divise le reste de ma résolution (variable zone_modifiee) par le
nombre d'élèves pour trouver la hauteur des lignes que je veux modifier,
j'obtiens une hauteur de ligne qui sort de l'écran, quand j'exécute la
macro.
Bref! je patauge.
Si vous aviez une réponse... ou une astuce...
Merci d'avance
elect
PS: Je cherche à faire ça pour utiliser le fichier sur d'autres ordi qui
n'ont pas forcément la même résolution.
Option Explicit 'JCGL : Merci à la communauté XL pour ce code : je ne sais
plus où je l'ai trouvé...
Option Private Module
Type RECT
x1 As Long
y1 As Long
x2 As Long
y2 As Long
End Type
Declare Function GetDesktopWindow Lib "User32" () As Long
Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long,
rectangle As RECT) As Long
'Calcul de la resolution
Function GetScreenResolution() As String
Dim R As RECT
Dim hWnd As Long
Dim RetVal As Long
hWnd = GetDesktopWindow()
RetVal = GetWindowRect(hWnd, R)
GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)
End Function
'Agrandi les lignes comprises entre 5 et 34 pour les ajuster à la
résolution
Sub hauteur_lignes()
Dim Hauteur As Variant, Resolution As String, zoneHaut As Variant
Dim zone_modifiee As Variant, Nb_Eleves As Byte, Haut_Row As Double
Dim rw As Variant
Resolution = GetScreenResolution ' Récupère par API la résolution ecran
Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1) ' Prend la
hauteur
zoneHaut = 256 'zone à ne pas toucher
zone_modifiee = Hauteur - zoneHaut
Nb_Eleves = 30
Haut_Row = zone_modifiee / Nb_Eleves
For Each rw In ActiveSheet.Rows
If rw.Row > 4 And rw.Row < 35 Then
rw.RowHeight = Haut_Row
End If
Next rw
End Sub
Bonjour. Tu peux peut-être jouer avec le Zoom offert dans le menu Affichage.
Rows("1:17").Select ActiveWindow.Zoom = True
Mishell
"elect31" wrote in message news:
Bonjour à tous Ayant récupéré sur un forum, du code pour détecter la résolution de mon écran, je voudrais écrire une macro "hauteur_lignes()" qui adapterait la hauteur des lignes comprises entre > 4 et < 35 à ce qui reste de la résolution quand on y déduit les 4 premières lignes. N'arrivant pas à faire cela d'une manière excellente, j'ai arbitrairement déterminé la hauteur de ces 4 lignes (à préserver) à 256 points ( variable zoneHaut) Quand je divise le reste de ma résolution (variable zone_modifiee) par le nombre d'élèves pour trouver la hauteur des lignes que je veux modifier, j'obtiens une hauteur de ligne qui sort de l'écran, quand j'exécute la macro. Bref! je patauge. Si vous aviez une réponse... ou une astuce... Merci d'avance elect
PS: Je cherche à faire ça pour utiliser le fichier sur d'autres ordi qui n'ont pas forcément la même résolution.
Option Explicit 'JCGL : Merci à la communauté XL pour ce code : je ne sais plus où je l'ai trouvé... Option Private Module Type RECT x1 As Long y1 As Long x2 As Long y2 As Long End Type
Declare Function GetDesktopWindow Lib "User32" () As Long Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long, rectangle As RECT) As Long 'Calcul de la resolution Function GetScreenResolution() As String Dim R As RECT Dim hWnd As Long Dim RetVal As Long hWnd = GetDesktopWindow() RetVal = GetWindowRect(hWnd, R) GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1) End Function
'Agrandi les lignes comprises entre 5 et 34 pour les ajuster à la résolution Sub hauteur_lignes() Dim Hauteur As Variant, Resolution As String, zoneHaut As Variant Dim zone_modifiee As Variant, Nb_Eleves As Byte, Haut_Row As Double Dim rw As Variant Resolution = GetScreenResolution ' Récupère par API la résolution ecran Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1) ' Prend la hauteur zoneHaut = 256 'zone à ne pas toucher zone_modifiee = Hauteur - zoneHaut Nb_Eleves = 30 Haut_Row = zone_modifiee / Nb_Eleves For Each rw In ActiveSheet.Rows If rw.Row > 4 And rw.Row < 35 Then rw.RowHeight = Haut_Row End If Next rw End Sub
MichDenis
Bonjour Elect31,
Pour te donner une idée pour retrouver quelques informations pouvant t'aider à solutionner ton problème. Évidemment, je n'ai pas listé toutes les propriétés de la propriété "VisibleRange"...
'----------------------------------- Sub test() Dim X As Double With ThisWorkbook .Worksheets("Feuil1").Select With .Windows(1) 'Trouve la hauteur de toutes les lignes visibles X = .VisibleRange.Height 'Trouve le nombre de lignes visibles y = .VisibleRange.Rows.Count 'Trouve l'adresse de la plage affichée à l'écran Z = .VisibleRange.Address End With End With End Sub '-----------------------------------
"elect31" a écrit dans le message de groupe de discussion :
Bonjour à tous Ayant récupéré sur un forum, du code pour détecter la résolution de mon écran, je voudrais écrire une macro "hauteur_lignes()" qui adapterait la hauteur des lignes comprises entre > 4 et < 35 à ce qui reste de la résolution quand on y déduit les 4 premières lignes. N'arrivant pas à faire cela d'une manière excellente, j'ai arbitrairement déterminé la hauteur de ces 4 lignes (à préserver) à 256 points ( variable zoneHaut) Quand je divise le reste de ma résolution (variable zone_modifiee) par le nombre d'élèves pour trouver la hauteur des lignes que je veux modifier, j'obtiens une hauteur de ligne qui sort de l'écran, quand j'exécute la macro. Bref! je patauge. Si vous aviez une réponse... ou une astuce... Merci d'avance elect
PS: Je cherche à faire ça pour utiliser le fichier sur d'autres ordi qui n'ont pas forcément la même résolution.
Option Explicit 'JCGL : Merci à la communauté XL pour ce code : je ne sais plus où je l'ai trouvé... Option Private Module Type RECT x1 As Long y1 As Long x2 As Long y2 As Long End Type
Declare Function GetDesktopWindow Lib "User32" () As Long Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long, rectangle As RECT) As Long 'Calcul de la resolution Function GetScreenResolution() As String Dim R As RECT Dim hWnd As Long Dim RetVal As Long hWnd = GetDesktopWindow() RetVal = GetWindowRect(hWnd, R) GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1) End Function
'Agrandi les lignes comprises entre 5 et 34 pour les ajuster à la résolution Sub hauteur_lignes() Dim Hauteur As Variant, Resolution As String, zoneHaut As Variant Dim zone_modifiee As Variant, Nb_Eleves As Byte, Haut_Row As Double Dim rw As Variant Resolution = GetScreenResolution ' Récupère par API la résolution ecran Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1) ' Prend la hauteur zoneHaut = 256 'zone à ne pas toucher zone_modifiee = Hauteur - zoneHaut Nb_Eleves = 30 Haut_Row = zone_modifiee / Nb_Eleves For Each rw In ActiveSheet.Rows If rw.Row > 4 And rw.Row < 35 Then rw.RowHeight = Haut_Row End If Next rw End Sub
Bonjour Elect31,
Pour te donner une idée pour retrouver quelques informations
pouvant t'aider à solutionner ton problème. Évidemment, je
n'ai pas listé toutes les propriétés de la propriété "VisibleRange"...
'-----------------------------------
Sub test()
Dim X As Double
With ThisWorkbook
.Worksheets("Feuil1").Select
With .Windows(1)
'Trouve la hauteur de toutes les lignes visibles
X = .VisibleRange.Height
'Trouve le nombre de lignes visibles
y = .VisibleRange.Rows.Count
'Trouve l'adresse de la plage affichée à l'écran
Z = .VisibleRange.Address
End With
End With
End Sub
'-----------------------------------
"elect31" <rg31@free.fr> a écrit dans le message de groupe de discussion :
enbktWX9JHA.5780@TK2MSFTNGP03.phx.gbl...
Bonjour à tous
Ayant récupéré sur un forum, du code pour détecter la résolution de mon
écran, je voudrais écrire une macro "hauteur_lignes()" qui adapterait la
hauteur des lignes comprises entre > 4 et < 35 à ce qui reste de la
résolution quand on y déduit les 4 premières lignes.
N'arrivant pas à faire cela d'une manière excellente, j'ai
arbitrairement déterminé la hauteur de ces 4 lignes (à préserver) à 256
points ( variable zoneHaut)
Quand je divise le reste de ma résolution (variable zone_modifiee) par
le nombre d'élèves pour trouver la hauteur des lignes que je veux
modifier, j'obtiens une hauteur de ligne qui sort de l'écran, quand
j'exécute la macro.
Bref! je patauge.
Si vous aviez une réponse... ou une astuce...
Merci d'avance
elect
PS: Je cherche à faire ça pour utiliser le fichier sur d'autres ordi qui
n'ont pas forcément la même résolution.
Option Explicit 'JCGL : Merci à la communauté XL pour ce code : je ne
sais plus où je l'ai trouvé...
Option Private Module
Type RECT
x1 As Long
y1 As Long
x2 As Long
y2 As Long
End Type
Declare Function GetDesktopWindow Lib "User32" () As Long
Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long,
rectangle As RECT) As Long
'Calcul de la resolution
Function GetScreenResolution() As String
Dim R As RECT
Dim hWnd As Long
Dim RetVal As Long
hWnd = GetDesktopWindow()
RetVal = GetWindowRect(hWnd, R)
GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)
End Function
'Agrandi les lignes comprises entre 5 et 34 pour les ajuster à la résolution
Sub hauteur_lignes()
Dim Hauteur As Variant, Resolution As String, zoneHaut As Variant
Dim zone_modifiee As Variant, Nb_Eleves As Byte, Haut_Row As Double
Dim rw As Variant
Resolution = GetScreenResolution ' Récupère par API la résolution ecran
Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1) ' Prend la
hauteur
zoneHaut = 256 'zone à ne pas toucher
zone_modifiee = Hauteur - zoneHaut
Nb_Eleves = 30
Haut_Row = zone_modifiee / Nb_Eleves
For Each rw In ActiveSheet.Rows
If rw.Row > 4 And rw.Row < 35 Then
rw.RowHeight = Haut_Row
End If
Next rw
End Sub
Pour te donner une idée pour retrouver quelques informations pouvant t'aider à solutionner ton problème. Évidemment, je n'ai pas listé toutes les propriétés de la propriété "VisibleRange"...
'----------------------------------- Sub test() Dim X As Double With ThisWorkbook .Worksheets("Feuil1").Select With .Windows(1) 'Trouve la hauteur de toutes les lignes visibles X = .VisibleRange.Height 'Trouve le nombre de lignes visibles y = .VisibleRange.Rows.Count 'Trouve l'adresse de la plage affichée à l'écran Z = .VisibleRange.Address End With End With End Sub '-----------------------------------
"elect31" a écrit dans le message de groupe de discussion :
Bonjour à tous Ayant récupéré sur un forum, du code pour détecter la résolution de mon écran, je voudrais écrire une macro "hauteur_lignes()" qui adapterait la hauteur des lignes comprises entre > 4 et < 35 à ce qui reste de la résolution quand on y déduit les 4 premières lignes. N'arrivant pas à faire cela d'une manière excellente, j'ai arbitrairement déterminé la hauteur de ces 4 lignes (à préserver) à 256 points ( variable zoneHaut) Quand je divise le reste de ma résolution (variable zone_modifiee) par le nombre d'élèves pour trouver la hauteur des lignes que je veux modifier, j'obtiens une hauteur de ligne qui sort de l'écran, quand j'exécute la macro. Bref! je patauge. Si vous aviez une réponse... ou une astuce... Merci d'avance elect
PS: Je cherche à faire ça pour utiliser le fichier sur d'autres ordi qui n'ont pas forcément la même résolution.
Option Explicit 'JCGL : Merci à la communauté XL pour ce code : je ne sais plus où je l'ai trouvé... Option Private Module Type RECT x1 As Long y1 As Long x2 As Long y2 As Long End Type
Declare Function GetDesktopWindow Lib "User32" () As Long Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long, rectangle As RECT) As Long 'Calcul de la resolution Function GetScreenResolution() As String Dim R As RECT Dim hWnd As Long Dim RetVal As Long hWnd = GetDesktopWindow() RetVal = GetWindowRect(hWnd, R) GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1) End Function
'Agrandi les lignes comprises entre 5 et 34 pour les ajuster à la résolution Sub hauteur_lignes() Dim Hauteur As Variant, Resolution As String, zoneHaut As Variant Dim zone_modifiee As Variant, Nb_Eleves As Byte, Haut_Row As Double Dim rw As Variant Resolution = GetScreenResolution ' Récupère par API la résolution ecran Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1) ' Prend la hauteur zoneHaut = 256 'zone à ne pas toucher zone_modifiee = Hauteur - zoneHaut Nb_Eleves = 30 Haut_Row = zone_modifiee / Nb_Eleves For Each rw In ActiveSheet.Rows If rw.Row > 4 And rw.Row < 35 Then rw.RowHeight = Haut_Row End If Next rw End Sub
elect31
Bonsoir Mishell Merci de ta réponse mais le zoom ne me va absolument pas.Il me réduit toute la zone sélectionnée, alors que je ne veux qu'adapter la hauteur des lignes 5 à 34 à ce qui me reste d'écran, une fois déduit la zone fixe des 4 lignes du haut. Je ne veux pas zoomer mais juste recalculer la hauteur des certaines lignes. elect Mishell a écrit :
Bonjour. Tu peux peut-être jouer avec le Zoom offert dans le menu Affichage.
Rows("1:17").Select ActiveWindow.Zoom = True
Mishell
"elect31" wrote in message news:
Bonjour à tous Ayant récupéré sur un forum, du code pour détecter la résolution de mon écran, je voudrais écrire une macro "hauteur_lignes()" qui adapterait la hauteur des lignes comprises entre > 4 et < 35 à ce qui reste de la résolution quand on y déduit les 4 premières lignes. N'arrivant pas à faire cela d'une manière excellente, j'ai arbitrairement déterminé la hauteur de ces 4 lignes (à préserver) à 256 points ( variable zoneHaut) Quand je divise le reste de ma résolution (variable zone_modifiee) par le nombre d'élèves pour trouver la hauteur des lignes que je veux modifier, j'obtiens une hauteur de ligne qui sort de l'écran, quand j'exécute la macro. Bref! je patauge. Si vous aviez une réponse... ou une astuce... Merci d'avance elect
PS: Je cherche à faire ça pour utiliser le fichier sur d'autres ordi qui n'ont pas forcément la même résolution.
Option Explicit 'JCGL : Merci à la communauté XL pour ce code : je ne sais plus où je l'ai trouvé... Option Private Module Type RECT x1 As Long y1 As Long x2 As Long y2 As Long End Type
Declare Function GetDesktopWindow Lib "User32" () As Long Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long, rectangle As RECT) As Long 'Calcul de la resolution Function GetScreenResolution() As String Dim R As RECT Dim hWnd As Long Dim RetVal As Long hWnd = GetDesktopWindow() RetVal = GetWindowRect(hWnd, R) GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1) End Function
'Agrandi les lignes comprises entre 5 et 34 pour les ajuster à la résolution Sub hauteur_lignes() Dim Hauteur As Variant, Resolution As String, zoneHaut As Variant Dim zone_modifiee As Variant, Nb_Eleves As Byte, Haut_Row As Double Dim rw As Variant Resolution = GetScreenResolution ' Récupère par API la résolution ecran Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1) ' Prend la hauteur zoneHaut = 256 'zone à ne pas toucher zone_modifiee = Hauteur - zoneHaut Nb_Eleves = 30 Haut_Row = zone_modifiee / Nb_Eleves For Each rw In ActiveSheet.Rows If rw.Row > 4 And rw.Row < 35 Then rw.RowHeight = Haut_Row End If Next rw End Sub
Bonsoir Mishell
Merci de ta réponse mais le zoom ne me va absolument pas.Il me réduit
toute la zone sélectionnée, alors que je ne veux qu'adapter la hauteur
des lignes 5 à 34 à ce qui me reste d'écran, une fois déduit la zone
fixe des 4 lignes du haut. Je ne veux pas zoomer mais juste recalculer
la hauteur des certaines lignes.
elect
Mishell a écrit :
Bonjour.
Tu peux peut-être jouer avec le Zoom offert dans le menu Affichage.
Rows("1:17").Select
ActiveWindow.Zoom = True
Mishell
"elect31" <rg31@free.fr> wrote in message
news:enbktWX9JHA.5780@TK2MSFTNGP03.phx.gbl...
Bonjour à tous
Ayant récupéré sur un forum, du code pour détecter la résolution de mon
écran, je voudrais écrire une macro "hauteur_lignes()" qui adapterait la
hauteur des lignes comprises entre > 4 et < 35 à ce qui reste de la
résolution quand on y déduit les 4 premières lignes.
N'arrivant pas à faire cela d'une manière excellente, j'ai arbitrairement
déterminé la hauteur de ces 4 lignes (à préserver) à 256 points ( variable
zoneHaut)
Quand je divise le reste de ma résolution (variable zone_modifiee) par le
nombre d'élèves pour trouver la hauteur des lignes que je veux modifier,
j'obtiens une hauteur de ligne qui sort de l'écran, quand j'exécute la
macro.
Bref! je patauge.
Si vous aviez une réponse... ou une astuce...
Merci d'avance
elect
PS: Je cherche à faire ça pour utiliser le fichier sur d'autres ordi qui
n'ont pas forcément la même résolution.
Option Explicit 'JCGL : Merci à la communauté XL pour ce code : je ne sais
plus où je l'ai trouvé...
Option Private Module
Type RECT
x1 As Long
y1 As Long
x2 As Long
y2 As Long
End Type
Declare Function GetDesktopWindow Lib "User32" () As Long
Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long,
rectangle As RECT) As Long
'Calcul de la resolution
Function GetScreenResolution() As String
Dim R As RECT
Dim hWnd As Long
Dim RetVal As Long
hWnd = GetDesktopWindow()
RetVal = GetWindowRect(hWnd, R)
GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)
End Function
'Agrandi les lignes comprises entre 5 et 34 pour les ajuster à la
résolution
Sub hauteur_lignes()
Dim Hauteur As Variant, Resolution As String, zoneHaut As Variant
Dim zone_modifiee As Variant, Nb_Eleves As Byte, Haut_Row As Double
Dim rw As Variant
Resolution = GetScreenResolution ' Récupère par API la résolution ecran
Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1) ' Prend la
hauteur
zoneHaut = 256 'zone à ne pas toucher
zone_modifiee = Hauteur - zoneHaut
Nb_Eleves = 30
Haut_Row = zone_modifiee / Nb_Eleves
For Each rw In ActiveSheet.Rows
If rw.Row > 4 And rw.Row < 35 Then
rw.RowHeight = Haut_Row
End If
Next rw
End Sub
Bonsoir Mishell Merci de ta réponse mais le zoom ne me va absolument pas.Il me réduit toute la zone sélectionnée, alors que je ne veux qu'adapter la hauteur des lignes 5 à 34 à ce qui me reste d'écran, une fois déduit la zone fixe des 4 lignes du haut. Je ne veux pas zoomer mais juste recalculer la hauteur des certaines lignes. elect Mishell a écrit :
Bonjour. Tu peux peut-être jouer avec le Zoom offert dans le menu Affichage.
Rows("1:17").Select ActiveWindow.Zoom = True
Mishell
"elect31" wrote in message news:
Bonjour à tous Ayant récupéré sur un forum, du code pour détecter la résolution de mon écran, je voudrais écrire une macro "hauteur_lignes()" qui adapterait la hauteur des lignes comprises entre > 4 et < 35 à ce qui reste de la résolution quand on y déduit les 4 premières lignes. N'arrivant pas à faire cela d'une manière excellente, j'ai arbitrairement déterminé la hauteur de ces 4 lignes (à préserver) à 256 points ( variable zoneHaut) Quand je divise le reste de ma résolution (variable zone_modifiee) par le nombre d'élèves pour trouver la hauteur des lignes que je veux modifier, j'obtiens une hauteur de ligne qui sort de l'écran, quand j'exécute la macro. Bref! je patauge. Si vous aviez une réponse... ou une astuce... Merci d'avance elect
PS: Je cherche à faire ça pour utiliser le fichier sur d'autres ordi qui n'ont pas forcément la même résolution.
Option Explicit 'JCGL : Merci à la communauté XL pour ce code : je ne sais plus où je l'ai trouvé... Option Private Module Type RECT x1 As Long y1 As Long x2 As Long y2 As Long End Type
Declare Function GetDesktopWindow Lib "User32" () As Long Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long, rectangle As RECT) As Long 'Calcul de la resolution Function GetScreenResolution() As String Dim R As RECT Dim hWnd As Long Dim RetVal As Long hWnd = GetDesktopWindow() RetVal = GetWindowRect(hWnd, R) GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1) End Function
'Agrandi les lignes comprises entre 5 et 34 pour les ajuster à la résolution Sub hauteur_lignes() Dim Hauteur As Variant, Resolution As String, zoneHaut As Variant Dim zone_modifiee As Variant, Nb_Eleves As Byte, Haut_Row As Double Dim rw As Variant Resolution = GetScreenResolution ' Récupère par API la résolution ecran Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1) ' Prend la hauteur zoneHaut = 256 'zone à ne pas toucher zone_modifiee = Hauteur - zoneHaut Nb_Eleves = 30 Haut_Row = zone_modifiee / Nb_Eleves For Each rw In ActiveSheet.Rows If rw.Row > 4 And rw.Row < 35 Then rw.RowHeight = Haut_Row End If Next rw End Sub
elect31
Merci Mich mais je ne vois pas trop à quoi pourrait bien me servir .VisibleRange. Mais... je cherche encore... Je 'reposte' encore pour compléter ma question en précisant que j'utilise une procédure qui zoome la feuille, avant la sub hauteur_lignes(). Voilà cette procédure: (elle n'est pas de moi) 'Application du zoom Sub zoom_feuille() Dim Hauteur As Variant, Zoom As Double, Resolution As String Const Zoom_100 As Integer = 1400 ' Constante de calcul pour le zoom
Resolution = GetScreenResolution ' Récupère par API la résolution ecran Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1) ' Prend la hauteur Zoom = (128 / Zoom_100) * CDbl(Hauteur) ' Calcul le zoom ActiveWindow.Zoom = Format(Zoom, "0") 'change le % de zoom
End Sub Voilà! 1° sub zoom_feuille() ( en faisant appel à la fonction GetScreenResolution()'Me permet de zoomer et d'adapter la largeur de la feuille à la largeur de l'écran. 2° sub hauteur_lignes()' Devrait me permettre de réduire la hauteur des lignes tout en conservant le zoom, dans le but d'adapter la hauteur de la zone qui m'intéresse à la hauteur de l'écran. J'espère avoir été plus clair (mais à me relire, j'en doute...) Merci de vos réponses elect
MichDenis a écrit :
Bonjour Elect31,
Pour te donner une idée pour retrouver quelques informations pouvant t'aider à solutionner ton problème. Évidemment, je n'ai pas listé toutes les propriétés de la propriété "VisibleRange"...
'----------------------------------- Sub test() Dim X As Double With ThisWorkbook .Worksheets("Feuil1").Select With .Windows(1) 'Trouve la hauteur de toutes les lignes visibles X = .VisibleRange.Height 'Trouve le nombre de lignes visibles y = .VisibleRange.Rows.Count 'Trouve l'adresse de la plage affichée à l'écran Z = .VisibleRange.Address End With End With End Sub '-----------------------------------
"elect31" a écrit dans le message de groupe de discussion :
Bonjour à tous Ayant récupéré sur un forum, du code pour détecter la résolution de mon écran, je voudrais écrire une macro "hauteur_lignes()" qui adapterait la hauteur des lignes comprises entre > 4 et < 35 à ce qui reste de la résolution quand on y déduit les 4 premières lignes. N'arrivant pas à faire cela d'une manière excellente, j'ai arbitrairement déterminé la hauteur de ces 4 lignes (à préserver) à 256 points ( variable zoneHaut) Quand je divise le reste de ma résolution (variable zone_modifiee) par le nombre d'élèves pour trouver la hauteur des lignes que je veux modifier, j'obtiens une hauteur de ligne qui sort de l'écran, quand j'exécute la macro. Bref! je patauge. Si vous aviez une réponse... ou une astuce... Merci d'avance elect
PS: Je cherche à faire ça pour utiliser le fichier sur d'autres ordi qui n'ont pas forcément la même résolution.
Option Explicit 'JCGL : Merci à la communauté XL pour ce code : je ne sais plus où je l'ai trouvé... Option Private Module Type RECT x1 As Long y1 As Long x2 As Long y2 As Long End Type
Declare Function GetDesktopWindow Lib "User32" () As Long Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long, rectangle As RECT) As Long 'Calcul de la resolution Function GetScreenResolution() As String Dim R As RECT Dim hWnd As Long Dim RetVal As Long hWnd = GetDesktopWindow() RetVal = GetWindowRect(hWnd, R) GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1) End Function
'Agrandi les lignes comprises entre 5 et 34 pour les ajuster à la résolution Sub hauteur_lignes() Dim Hauteur As Variant, Resolution As String, zoneHaut As Variant Dim zone_modifiee As Variant, Nb_Eleves As Byte, Haut_Row As Double Dim rw As Variant Resolution = GetScreenResolution ' Récupère par API la résolution ecran Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1) ' Prend la hauteur zoneHaut = 256 'zone à ne pas toucher zone_modifiee = Hauteur - zoneHaut Nb_Eleves = 30 Haut_Row = zone_modifiee / Nb_Eleves For Each rw In ActiveSheet.Rows If rw.Row > 4 And rw.Row < 35 Then rw.RowHeight = Haut_Row End If Next rw End Sub
Merci Mich mais je ne vois pas trop à quoi pourrait bien me servir
.VisibleRange. Mais... je cherche encore...
Je 'reposte' encore pour compléter ma question en précisant que
j'utilise une procédure qui zoome la feuille, avant la sub hauteur_lignes().
Voilà cette procédure: (elle n'est pas de moi)
'Application du zoom
Sub zoom_feuille()
Dim Hauteur As Variant, Zoom As Double, Resolution As String
Const Zoom_100 As Integer = 1400 ' Constante de calcul pour le zoom
Resolution = GetScreenResolution ' Récupère par API la résolution ecran
Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1) ' Prend la
hauteur
Zoom = (128 / Zoom_100) * CDbl(Hauteur) ' Calcul le zoom
ActiveWindow.Zoom = Format(Zoom, "0") 'change le % de zoom
End Sub
Voilà!
1° sub zoom_feuille() ( en faisant appel à la fonction
GetScreenResolution()'Me permet de zoomer et d'adapter la largeur de la
feuille à la largeur de l'écran.
2° sub hauteur_lignes()' Devrait me permettre de réduire la hauteur des
lignes tout en conservant le zoom, dans le but d'adapter la hauteur de
la zone qui m'intéresse à la hauteur de l'écran.
J'espère avoir été plus clair (mais à me relire, j'en doute...)
Merci de vos réponses
elect
MichDenis a écrit :
Bonjour Elect31,
Pour te donner une idée pour retrouver quelques informations
pouvant t'aider à solutionner ton problème. Évidemment, je
n'ai pas listé toutes les propriétés de la propriété "VisibleRange"...
'-----------------------------------
Sub test()
Dim X As Double
With ThisWorkbook
.Worksheets("Feuil1").Select
With .Windows(1)
'Trouve la hauteur de toutes les lignes visibles
X = .VisibleRange.Height
'Trouve le nombre de lignes visibles
y = .VisibleRange.Rows.Count
'Trouve l'adresse de la plage affichée à l'écran
Z = .VisibleRange.Address
End With
End With
End Sub
'-----------------------------------
"elect31" <rg31@free.fr> a écrit dans le message de groupe de discussion :
enbktWX9JHA.5780@TK2MSFTNGP03.phx.gbl...
Bonjour à tous
Ayant récupéré sur un forum, du code pour détecter la résolution de mon
écran, je voudrais écrire une macro "hauteur_lignes()" qui adapterait la
hauteur des lignes comprises entre > 4 et < 35 à ce qui reste de la
résolution quand on y déduit les 4 premières lignes.
N'arrivant pas à faire cela d'une manière excellente, j'ai
arbitrairement déterminé la hauteur de ces 4 lignes (à préserver) à 256
points ( variable zoneHaut)
Quand je divise le reste de ma résolution (variable zone_modifiee) par
le nombre d'élèves pour trouver la hauteur des lignes que je veux
modifier, j'obtiens une hauteur de ligne qui sort de l'écran, quand
j'exécute la macro.
Bref! je patauge.
Si vous aviez une réponse... ou une astuce...
Merci d'avance
elect
PS: Je cherche à faire ça pour utiliser le fichier sur d'autres ordi qui
n'ont pas forcément la même résolution.
Option Explicit 'JCGL : Merci à la communauté XL pour ce code : je ne
sais plus où je l'ai trouvé...
Option Private Module
Type RECT
x1 As Long
y1 As Long
x2 As Long
y2 As Long
End Type
Declare Function GetDesktopWindow Lib "User32" () As Long
Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long,
rectangle As RECT) As Long
'Calcul de la resolution
Function GetScreenResolution() As String
Dim R As RECT
Dim hWnd As Long
Dim RetVal As Long
hWnd = GetDesktopWindow()
RetVal = GetWindowRect(hWnd, R)
GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)
End Function
'Agrandi les lignes comprises entre 5 et 34 pour les ajuster à la résolution
Sub hauteur_lignes()
Dim Hauteur As Variant, Resolution As String, zoneHaut As Variant
Dim zone_modifiee As Variant, Nb_Eleves As Byte, Haut_Row As Double
Dim rw As Variant
Resolution = GetScreenResolution ' Récupère par API la résolution ecran
Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1) ' Prend la
hauteur
zoneHaut = 256 'zone à ne pas toucher
zone_modifiee = Hauteur - zoneHaut
Nb_Eleves = 30
Haut_Row = zone_modifiee / Nb_Eleves
For Each rw In ActiveSheet.Rows
If rw.Row > 4 And rw.Row < 35 Then
rw.RowHeight = Haut_Row
End If
Next rw
End Sub
Merci Mich mais je ne vois pas trop à quoi pourrait bien me servir .VisibleRange. Mais... je cherche encore... Je 'reposte' encore pour compléter ma question en précisant que j'utilise une procédure qui zoome la feuille, avant la sub hauteur_lignes(). Voilà cette procédure: (elle n'est pas de moi) 'Application du zoom Sub zoom_feuille() Dim Hauteur As Variant, Zoom As Double, Resolution As String Const Zoom_100 As Integer = 1400 ' Constante de calcul pour le zoom
Resolution = GetScreenResolution ' Récupère par API la résolution ecran Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1) ' Prend la hauteur Zoom = (128 / Zoom_100) * CDbl(Hauteur) ' Calcul le zoom ActiveWindow.Zoom = Format(Zoom, "0") 'change le % de zoom
End Sub Voilà! 1° sub zoom_feuille() ( en faisant appel à la fonction GetScreenResolution()'Me permet de zoomer et d'adapter la largeur de la feuille à la largeur de l'écran. 2° sub hauteur_lignes()' Devrait me permettre de réduire la hauteur des lignes tout en conservant le zoom, dans le but d'adapter la hauteur de la zone qui m'intéresse à la hauteur de l'écran. J'espère avoir été plus clair (mais à me relire, j'en doute...) Merci de vos réponses elect
MichDenis a écrit :
Bonjour Elect31,
Pour te donner une idée pour retrouver quelques informations pouvant t'aider à solutionner ton problème. Évidemment, je n'ai pas listé toutes les propriétés de la propriété "VisibleRange"...
'----------------------------------- Sub test() Dim X As Double With ThisWorkbook .Worksheets("Feuil1").Select With .Windows(1) 'Trouve la hauteur de toutes les lignes visibles X = .VisibleRange.Height 'Trouve le nombre de lignes visibles y = .VisibleRange.Rows.Count 'Trouve l'adresse de la plage affichée à l'écran Z = .VisibleRange.Address End With End With End Sub '-----------------------------------
"elect31" a écrit dans le message de groupe de discussion :
Bonjour à tous Ayant récupéré sur un forum, du code pour détecter la résolution de mon écran, je voudrais écrire une macro "hauteur_lignes()" qui adapterait la hauteur des lignes comprises entre > 4 et < 35 à ce qui reste de la résolution quand on y déduit les 4 premières lignes. N'arrivant pas à faire cela d'une manière excellente, j'ai arbitrairement déterminé la hauteur de ces 4 lignes (à préserver) à 256 points ( variable zoneHaut) Quand je divise le reste de ma résolution (variable zone_modifiee) par le nombre d'élèves pour trouver la hauteur des lignes que je veux modifier, j'obtiens une hauteur de ligne qui sort de l'écran, quand j'exécute la macro. Bref! je patauge. Si vous aviez une réponse... ou une astuce... Merci d'avance elect
PS: Je cherche à faire ça pour utiliser le fichier sur d'autres ordi qui n'ont pas forcément la même résolution.
Option Explicit 'JCGL : Merci à la communauté XL pour ce code : je ne sais plus où je l'ai trouvé... Option Private Module Type RECT x1 As Long y1 As Long x2 As Long y2 As Long End Type
Declare Function GetDesktopWindow Lib "User32" () As Long Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long, rectangle As RECT) As Long 'Calcul de la resolution Function GetScreenResolution() As String Dim R As RECT Dim hWnd As Long Dim RetVal As Long hWnd = GetDesktopWindow() RetVal = GetWindowRect(hWnd, R) GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1) End Function
'Agrandi les lignes comprises entre 5 et 34 pour les ajuster à la résolution Sub hauteur_lignes() Dim Hauteur As Variant, Resolution As String, zoneHaut As Variant Dim zone_modifiee As Variant, Nb_Eleves As Byte, Haut_Row As Double Dim rw As Variant Resolution = GetScreenResolution ' Récupère par API la résolution ecran Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1) ' Prend la hauteur zoneHaut = 256 'zone à ne pas toucher zone_modifiee = Hauteur - zoneHaut Nb_Eleves = 30 Haut_Row = zone_modifiee / Nb_Eleves For Each rw In ActiveSheet.Rows If rw.Row > 4 And rw.Row < 35 Then rw.RowHeight = Haut_Row End If Next rw End Sub
MichDenis
Si tu veux être capable d'afficher une plage de cellule dans la partie visible de l'application, Faut-il d'abord connaître la hauteur totale de la plage visible disponible avant de pouvoir la distribuer selon tes besoins. Si tu n'utilises pas ce que je t'ai donné ".VisibleRange.Height" comment fais-tu pour savoir quelle est la hauteur de la fenêtre ?
Si tu as une meilleure façon de faire, ne te gêne pas pour l'utiliser et tu nous diras comment tu as fait.
Si tu veux être capable d'afficher une plage de cellule dans la partie
visible de l'application, Faut-il d'abord connaître la hauteur totale
de la plage visible disponible avant de pouvoir la distribuer selon
tes besoins. Si tu n'utilises pas ce que je t'ai donné ".VisibleRange.Height"
comment fais-tu pour savoir quelle est la hauteur de la fenêtre ?
Si tu as une meilleure façon de faire, ne te gêne pas pour l'utiliser et tu
nous diras comment tu as fait.
Si tu veux être capable d'afficher une plage de cellule dans la partie visible de l'application, Faut-il d'abord connaître la hauteur totale de la plage visible disponible avant de pouvoir la distribuer selon tes besoins. Si tu n'utilises pas ce que je t'ai donné ".VisibleRange.Height" comment fais-tu pour savoir quelle est la hauteur de la fenêtre ?
Si tu as une meilleure façon de faire, ne te gêne pas pour l'utiliser et tu nous diras comment tu as fait.