Toutes les lignes à la même taille

Le
alain Lebayle
Bonjour,
J'ai cette procédure qui fait planter le programme.
Je vous remercie de me donner un coup de main, je ne vois pas le pb
Merci
Alain

Sub Les_lignes()
Application.ScreenUpdating = False
Sheets("Travail").Unprotect Password:="toto"
Set plage = Range("A3:AD2000")
For Each C In plage
C.EntireRow.AutoFit
If C.RowHeight > 42.75 Then
Else
C.RowHeight = 42.75
End If
Next
Sheets("Travail").Unprotect Password:="toto"
Application.ScreenUpdating = True
End Sub

--
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FFO
Le #19733111
Salut alain

Ce code fonctionne parfaitement chez moi
Peut être un problème de données
As tu essayé dabord sur un classeur tout neuf avec un onglet vierge
puis en intégrant tes données par morceaux pour cerner celles éventuellement
qui pourraient être à l'origine de ton plantage ????

Tiens moi informé !!!!!
LSteph
Le #19733101
Bonjour,
pourquoi ce else ainsi sans rien dans then d'autant que si j'ai bien
compris:

Dim c As Range
[a1:a2000].EntireRow.AutoFit
For Each c In [a1:a2000].Cells
If c.RowHeight > 42.75 Then c.RowHeight = 42.75
Next


'lSteph



alain Lebayle a écrit :
Bonjour,
J'ai cette procédure qui fait planter le programme.
Je vous remercie de me donner un coup de main, je ne vois pas le pb
Merci
Alain

Sub Les_lignes()
Application.ScreenUpdating = False
Sheets("Travail").Unprotect Password:="toto"
Set plage = Range("A3:AD2000")
For Each C In plage
C.EntireRow.AutoFit
If C.RowHeight > 42.75 Then
Else
C.RowHeight = 42.75
End If
Next
Sheets("Travail").Unprotect Password:="toto"
Application.ScreenUpdating = True
End Sub



LSteph
Le #19733351
Re, Alain et FFO,
...je viens de regarder qu'en fait tu vas de A à AD
..de plus même si le code ...fonctionne ;o))
, il faut voir ce qu'il fait
soit ratisser toute les colonnes de chaque ligne pour finalement
conserver la hauteur
que les règles en définissent pour la dernière cellule
ainsi seul AD impacte le résultat obtenu

Pour établir la moulinette sur une seule colonne ce que j'ai
précédemment indiqué est plus direct.

Pour faire ce que tu sembles vouloir il faudrait tester
laquelle des colonnes pour chaque ligne contient la chaine de caractères
la plus longue
puis ajuster par rapport à celle ci.

je dois partir je regarde ca plus tard..sauf si quelqu'un s'en est
chargé ;-)

--
lSteph

alain Lebayle a écrit :
Bonjour,
J'ai cette procédure qui fait planter le programme.
Je vous remercie de me donner un coup de main, je ne vois pas le pb
Merci
Alain

Sub Les_lignes()
Application.ScreenUpdating = False
Sheets("Travail").Unprotect Password:="toto"
Set plage = Range("A3:AD2000")
For Each C In plage
C.EntireRow.AutoFit
If C.RowHeight > 42.75 Then
Else
C.RowHeight = 42.75
End If
Next
Sheets("Travail").Unprotect Password:="toto"
Application.ScreenUpdating = True
End Sub



pb
Le #19733521
Comme cela peut-être
Sub Les_lignes()
Application.ScreenUpdating = False
Sheets("Travail").Unprotect Password:="toto"
Set Plage = Range("A3:AD2000")
For Each c In Plage
If c.RowHeight > 42.75 Then c.RowHeight = 42.75
Next
End Sub
Chez moi cela fonctionne
Pascal

"alain Lebayle" news: 4a56e86e$0$291$
Bonjour,
J'ai cette procédure qui fait planter le programme.
Je vous remercie de me donner un coup de main, je ne vois pas le pb
Merci
Alain

Sub Les_lignes()
Application.ScreenUpdating = False
Sheets("Travail").Unprotect Password:="toto"
Set plage = Range("A3:AD2000")
For Each C In plage
C.EntireRow.AutoFit
If C.RowHeight > 42.75 Then
Else
C.RowHeight = 42.75
End If
Next
Sheets("Travail").Unprotect Password:="toto"
Application.ScreenUpdating = True
End Sub

--






Gloops
Le #19733681
Bonjour,

Comme ça au premier coup d'œil, la seule erreur que je voie est que l a
protection est retirée deux fois, une fois au début et une fois à l a
fin. Pas moyen d'essayer avec une pause juste avant pour vérifier où se
produit l'erreur ?

A part ça il devrait y avoir moyen effectivement d'optimiser comme le
note discrètement LSteph, puisque si on traite chaque cellule de la
plage A3:AD2000 pour rectifier la hauteur de la ligne, chaque ligne est
traitée cent quatre fois. Au bout d'une fois ou deux, si la correction
n'est pas faite, c'est qu'il y a un truc qui coince, non ?
____________________________________________
alain Lebayle a écrit, le 10/07/2009 09:06 :
Bonjour,
J'ai cette procédure qui fait planter le programme.
Je vous remercie de me donner un coup de main, je ne vois pas le pb
Merci
Alain

Sub Les_lignes()
Application.ScreenUpdating = False
Sheets("Travail").Unprotect Password:="toto"
Set plage = Range("A3:AD2000")
For Each C In plage
C.EntireRow.AutoFit
If C.RowHeight > 42.75 Then
Else
C.RowHeight = 42.75
End If
Next
Sheets("Travail").Unprotect Password:="toto"
Application.ScreenUpdating = True
End Sub



LSteph
Le #19733791
..donc plus simplement:

Dim i As Long
[a1:ad2000].Rows.EntireRow.AutoFit
For i = 1 To 2000
If Rows(i).RowHeight > 42.75 Then _
Rows(i).RowHeight = 42.75
Next

'lSteph


On 10 juil, 09:35, LSteph
Re, Alain et FFO,
...je viens de regarder qu'en fait tu vas de A à AD
..de plus même si le code ...fonctionne ;o))
, il faut voir ce qu'il fait
soit ratisser toute les colonnes de chaque ligne pour finalement
conserver la hauteur
que les règles en définissent pour la dernière cellule
ainsi seul AD impacte le résultat obtenu

Pour établir la moulinette sur une seule colonne ce que j'ai
précédemment indiqué est plus direct.

Pour faire ce que tu sembles vouloir il faudrait tester
laquelle des colonnes pour chaque ligne contient la chaine de caractère s
la plus longue
puis ajuster par rapport à celle ci.

je dois partir je regarde ca plus tard..sauf si quelqu'un s'en est
chargé ;-)

--
lSteph

alain Lebayle a écrit :



> Bonjour,
> J'ai cette procédure qui fait planter le programme.
> Je vous remercie de me donner un coup de main, je ne vois pas le pb
> Merci
> Alain

> Sub Les_lignes()
> Application.ScreenUpdating = False
>  Sheets("Travail").Unprotect Password:="toto"
>  Set plage = Range("A3:AD2000")
> For Each C In plage
>   C.EntireRow.AutoFit
>   If C.RowHeight > 42.75 Then
>   Else
>    C.RowHeight = 42.75
>   End If
> Next
>  Sheets("Travail").Unprotect Password:="toto"
>  Application.ScreenUpdating = True
> End Sub- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


LSteph
Le #19733891
Bonjour,

Pour la protection j'ai vu que c'était gèré avant après, je n'ai
volontairement donc donné d'indication (à adapter) que sur la question
posée sur les lignes
et dont tu as bien relevé le souci ..donc cela peut se règler selon
les 5 petites lignes indiquées.

Mais puisque cette question est abordée on peut rendre plus pratique
l'usage des macros en sévitant déprotection reprotection au sein de
chacune
il suffit d'envisager la protection dans le Workbook_open
en mettant userinterfaceonly à true

exemple ici pour toutes les feuilles:

'dans le thisworkbook du classeur


Private Sub Workbook_open()
Dim sh as worksheet
For each sh in thisworkbook
sh.protect password:="toto", userinterfaceonly:=true
next
end sub


'pour tester fermer et rouvrir le classeur


'lSteph


On 10 juil, 10:21, Gloops
Bonjour,

Comme ça au premier coup d'œil, la seule erreur que je voie est que l a
protection est retirée deux fois, une fois au début et une fois à l a
fin. Pas moyen d'essayer avec une pause juste avant pour vérifier où se
produit l'erreur ?

A part ça il devrait y avoir moyen effectivement d'optimiser comme le
note discrètement LSteph, puisque si on traite chaque cellule de la
plage A3:AD2000 pour rectifier la hauteur de la ligne, chaque ligne est
traitée cent quatre fois. Au bout d'une fois ou deux, si la correction
n'est pas faite, c'est qu'il y a un truc qui coince, non ?
____________________________________________
alain Lebayle a écrit, le 10/07/2009 09:06 :



> Bonjour,
> J'ai cette procédure qui fait planter le programme.
> Je vous remercie de me donner un coup de main, je ne vois pas le pb
> Merci
> Alain

> Sub Les_lignes()
> Application.ScreenUpdating = False
>  Sheets("Travail").Unprotect Password:="toto"
>  Set plage = Range("A3:AD2000")
> For Each C In plage
>   C.EntireRow.AutoFit
>   If C.RowHeight > 42.75 Then
>   Else
>    C.RowHeight = 42.75
>   End If
> Next
>  Sheets("Travail").Unprotect Password:="toto"
>  Application.ScreenUpdating = True
> End Sub- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


LSteph
Le #19734041
...
Au bout d'une fois ou deux ...non plus


on peut pâaaasser ainsi chaque cellule si la dernière AD est bien plus
haute ou petite, c'est elle qui emportera le bout de gras
DONC ... Non je ne cherchais paz à être discret ;o) lol
il suffit de mettre l'autofit pour les lignesz entière avant de
bouclerpuis detraiter chaque ligne pour vérifier qu'elle n'excède pas
42.75

Dim c As Range
[a1:a2000].EntireRow.AutoFit
For Each c In [a1:a2000].Cells
If c.RowHeight > 42.75 Then c.RowHeight = 42.75
Next


'@+

'lSteph

A part ça il devrait y avoir moyen effectivement d'optimiser comme le
note discrètement LSteph, puisque si on traite chaque cellule de la
plage A3:AD2000 pour rectifier la hauteur de la ligne, chaque ligne est
traitée cent quatre fois. Au bout d'une fois ou deux, si la correction
n'est pas faite, c'est qu'il y a un truc qui coince, non ?
____________________________________________
alain Lebayle a écrit, le 10/07/2009 09:06 :



> Bonjour,
> J'ai cette procédure qui fait planter le programme.
> Je vous remercie de me donner un coup de main, je ne vois pas le pb
> Merci
> Alain

> Sub Les_lignes()
> Application.ScreenUpdating = False
>  Sheets("Travail").Unprotect Password:="toto"
>  Set plage = Range("A3:AD2000")
> For Each C In plage
>   C.EntireRow.AutoFit
>   If C.RowHeight > 42.75 Then
>   Else
>    C.RowHeight = 42.75
>   End If
> Next
>  Sheets("Travail").Unprotect Password:="toto"
>  Application.ScreenUpdating = True
> End Sub- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


LSteph
Le #19734281
...Oupss
le bon c'est celui là

Dim i As Long
[a1:ad2000].Rows.EntireRow.AutoFit
For i = 1 To 2000
If Rows(i).RowHeight > 42.75 Then _
Rows(i).RowHeight = 42.75
Next




n 10 juil, 11:10, LSteph
...> Au bout d'une fois ou deux ...non plus

on peut pâaaasser ainsi chaque cellule si la dernière AD est bien plu s
haute ou petite, c'est elle qui emportera le bout de gras
DONC ... Non je ne cherchais paz à être discret ;o) lol
il suffit de mettre l'autofit pour les lignesz entière avant de
bouclerpuis detraiter chaque ligne pour vérifier qu'elle n'excède pas
42.75

Dim c As Range
[a1:a2000].EntireRow.AutoFit
For Each c In [a1:a2000].Cells
If c.RowHeight > 42.75 Then c.RowHeight = 42.75
Next

'@+

'lSteph



> A part ça il devrait y avoir moyen effectivement d'optimiser comme le
> note discrètement LSteph, puisque si on traite chaque cellule de la
> plage A3:AD2000 pour rectifier la hauteur de la ligne, chaque ligne est
> traitée cent quatre fois. Au bout d'une fois ou deux, si la correctio n
> n'est pas faite, c'est qu'il y a un truc qui coince, non ?
> ____________________________________________
> alain Lebayle a écrit, le 10/07/2009 09:06 :

> > Bonjour,
> > J'ai cette procédure qui fait planter le programme.
> > Je vous remercie de me donner un coup de main, je ne vois pas le pb
> > Merci
> > Alain

> > Sub Les_lignes()
> > Application.ScreenUpdating = False
> >  Sheets("Travail").Unprotect Password:="toto"
> >  Set plage = Range("A3:AD2000")
> > For Each C In plage
> >   C.EntireRow.AutoFit
> >   If C.RowHeight > 42.75 Then
> >   Else
> >    C.RowHeight = 42.75
> >   End If
> > Next
> >  Sheets("Travail").Unprotect Password:="toto"
> >  Application.ScreenUpdating = True
> > End Sub- Masquer le texte des messages précédents -

> - Afficher le texte des messages précédents -- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


garnote
Le #19734851
Ave Stéphane,

Là j'ai besoin de tes lumières.
Si j'utilise cette instruction :
ActiveSheet.Protect , userinterfaceonly:=True
la feuille active est protégée mais peut être
modifiée par macro. Est-ce bien cela ?
Si c'est le cas, comment se fait-il que je ne peux
pas pas sélectionner une forme automatique par macro ?

Petite remarque :
Quand je vais dans l'aide 2007 pour la méthode WorkSheet.Protect,
les noms des paramètres de la méthode sont écrits exclusivement en français,
ce qui n'est guère pratique quand on veut les utiliser dans une macro !

Et une tite macro qui ne sert à rien. Viens de la retrouver dans mes anciens
documents, mias peut-être l'ai déjà publiée.

Sub Yi_King()
Dim i%, j%, k%, l%, m%, n%
Dim c%, col%, lig%, p%
With Application
.ScreenUpdating = False: .DisplayFullScreen = True
End With
Sheets.Add
With ActiveWindow
.DisplayGridlines = False: .DisplayHeadings = False
End With
With Cells
.ColumnWidth = 2: .RowHeight = 4
End With
Rows(4).RowHeight = 12
For i = 21 To 105 Step 14
Rows(i).RowHeight = 10
Next i
For i = 5 To 31 Step 4
Columns(i).ColumnWidth = 4
Next i
For i = 0 To 1: For j = 0 To 1
For k = 0 To 1: For l = 0 To 1
For m = 0 To 1: For n = 0 To 1
c = c + 1
col = (4 * c - 1) Mod 32
lig = 14 * Application.RoundUp(c / 8, 0) - 5
Cells(lig, col).Interior.ColorIndex = i
Cells(lig + 2, col).Interior.ColorIndex = j
Cells(lig + 4, col).Interior.ColorIndex = k
Cells(lig + 6, col).Interior.ColorIndex = l
Cells(lig + 8, col).Interior.ColorIndex = m
Cells(lig + 10, col).Interior.ColorIndex = n
For p = 0 To 10 Step 2
Cells(lig + p, col - 1).Interior.ColorIndex = 1
Cells(lig + p, col + 1).Interior.ColorIndex = 1
Next p
Next: Next: Next: Next: Next: Next
End Sub


A+
Serge



"LSteph"
Bonjour,

Pour la protection j'ai vu que c'était gèré avant après, je n'ai
volontairement donc donné d'indication (à adapter) que sur la question
posée sur les lignes
et dont tu as bien relevé le souci ..donc cela peut se règler selon
les 5 petites lignes indiquées.

Mais puisque cette question est abordée on peut rendre plus pratique
l'usage des macros en sévitant déprotection reprotection au sein de
chacune
il suffit d'envisager la protection dans le Workbook_open
en mettant userinterfaceonly à true

exemple ici pour toutes les feuilles:

'dans le thisworkbook du classeur


Private Sub Workbook_open()
Dim sh as worksheet
For each sh in thisworkbook
sh.protect password:="toto", userinterfaceonly:=true
next
end sub


'pour tester fermer et rouvrir le classeur


'lSteph


On 10 juil, 10:21, Gloops
Bonjour,

Comme ça au premier coup d'œil, la seule erreur que je voie est que la
protection est retirée deux fois, une fois au début et une fois à la
fin. Pas moyen d'essayer avec une pause juste avant pour vérifier où se
produit l'erreur ?

A part ça il devrait y avoir moyen effectivement d'optimiser comme le
note discrètement LSteph, puisque si on traite chaque cellule de la
plage A3:AD2000 pour rectifier la hauteur de la ligne, chaque ligne est
traitée cent quatre fois. Au bout d'une fois ou deux, si la correction
n'est pas faite, c'est qu'il y a un truc qui coince, non ?
____________________________________________
alain Lebayle a écrit, le 10/07/2009 09:06 :



> Bonjour,
> J'ai cette procédure qui fait planter le programme.
> Je vous remercie de me donner un coup de main, je ne vois pas le pb
> Merci
> Alain

> Sub Les_lignes()
> Application.ScreenUpdating = False
> Sheets("Travail").Unprotect Password:="toto"
> Set plage = Range("A3:AD2000")
> For Each C In plage
> C.EntireRow.AutoFit
> If C.RowHeight > 42.75 Then
> Else
> C.RowHeight = 42.75
> End If
> Next
> Sheets("Travail").Unprotect Password:="toto"
> Application.ScreenUpdating = True
> End Sub- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Publicité
Poster une réponse
Anonyme