Boucle sans fin et en désordre

  • Initiateur de la discussion Boby71C
  • Date de début
B

Boby71C

Guest
Bonjour à tous

Je désir encadrer à partir de A5 les cellules différentes de rien.
Si A est dif de rien, selectionner de 1 à 39 et encadrer.
Descendre 1 ligne et procéder comme ci-dessus
Si A est vide arrêter la bocle.
Mon problême est le suivant:
La boucle de recherche se fait bien, mais rien ne se passe sur mon document, je reste selectionné cellule active A5 et selection d'encadrement de 1 à 39 sur cette même ligne et ma boucle est sans fin.
Je n'arrive pas à comprendre l'ordre des macros.
Ci-dessous mon listing.
Sub Encadrement_Des_Cellules()
'
' Encadrement_Des_Cellules Macro
' Macro enregistrée le 02/03/2005 par Robert '
a = 5
Range('A5').Select
' Recherche les cellules comportant des N° de projets
While Cells(a, 1).Value <> ''
If Len(Cells(a, 1)) > 6 Then
Range(Cells(a, 1), Cells(a, 50)).Select
Else

' Selectionne la ligne de A à AM
Range(Selection, ActiveCell(1, 39)).Select

' Encadre les cellules de A à AM
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic

a = a + 1

End With



End If

Wend
End Sub

Merci de votre aide précieuse
Robert
:(
 
B

Boby71C

Guest
Bonjour Minick

Merci pour ta réponse extrémement rapide. J'ai essayé et je reste sur la ligne 5.
Comme je l'ai indiqué, il doit y avoir le foullis dans mon code car je suis débutant!
Merci de ton aide
Robert
 

galopin01

XLDnaute Occasionnel
bonjour,
tu incrémentes bien 'a' mais la sélection elle ne bouge pas
La clause while évalue une valeur incrémentée mais
dans else la sélection est toujours la même
...
Range(Selection, ActiveCell(1, 39)).Select

en d'autres termes il n'y a que dans la clause if que ta sélection change :
If Len(Cells(a, 1)) > 6 Then
Range(Cells(a, 1), Cells(a, 50)).Select

ok?
 
B

Boby71C

Guest
Re Bonjour les amis et mes sauveurs

Je vous joint mon fichier trés réduit car malheureusement, je ne comprends pas complètement la dernière réponse

Merci de votre aide [file name=DébFinActHeb_20050305161759.zip size=32805]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/DébFinActHeb_20050305161759.zip[/file]
 

Pièces jointes

  • DébFinActHeb_20050305161759.zip
    32 KB · Affichages: 11
B

Boby71C

Guest
Re

Ne perdez plus votre temps les amis, en me creusant la tête avec vos précieux conseils, j'y suis arrivé
Ci-dessous la macro
Sub Encadrement_Des_Cellules()
'
' Encadrement_Des_Cellules Macro
' Macro enregistrée le 02/03/2005 par PHILIPPE
'

'
'Windows('DébutFinActivitésHebdo.xls').Activate
a = 5
Range('A5').Select


' Recherche les cellules comportant des N° de projets
While Cells(a, 1).Value <> ''
Range(Cells(a, 1), Cells(a, 50)).Select
If Len(Cells(a, 1)) > 6 Then
Range(Cells(a, 1), Cells(a, 50)).Select

Else

' Selectionne la ligne de A à AM
Range(Selection, ActiveCell(1, 39)).Select

' Encadre les cellules de A à AM
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic

a = a + 1

End With



End If

Wend
End Sub


Merci à tous de vos précieux conseils et trés bon Week End
Robert
 

galopin01

XLDnaute Occasionnel
Je résume :
La macro suivante va réduire un peu ton code...

Sub Encadrement_Des_Cellules()
a = 5
Range('A5').Select
While Cells(a, 1).Value <> ''
Cells(a, 1).Select
If Len(Cells(a, 1)) < 6 Then
Range(Selection, ActiveCell(1, 39)).Select
Selection.Borders.Weight = xlThin
End If
a = a + 1
Wend
End Sub

A+

Message édité par: galopin01, à: 06/03/2005 11:39
 
B

Boby71C

Guest
Bonjour Galopin01 et le forum

Merci pour votre aide trés précieuse. J'allais justement m'atteler à réduire la complexité de ma Macro et je vois que Galopin01 m'a devancé. Vous êtes tous sensationnels, vos connaissances sauvent beaucoup de novices comme moi.
Trés bon dimanche à tous et A+
Robert
 

Discussions similaires

Statistiques des forums

Discussions
312 246
Messages
2 086 579
Membres
103 247
dernier inscrit
bottxok