Boucle sans fin et en désordre

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

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 !

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
🙁
 
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
 
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?
 
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

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
 
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
 
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
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
14
Affichages
477
M
Réponses
8
Affichages
2 K
Michelrib
M
T
  • Question Question
XL pour MAC Recherche date
Réponses
5
Affichages
2 K
tdenis
T
Retour