Problème boucle While wend

  • Initiateur de la discussion Initiateur de la discussion Attila451
  • 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 !

Attila451

XLDnaute Occasionnel
Bonjour,
Sachant que je peux avoir des tableaux de dimensions variables, je cherche à mettre une ligne sur deux avec une couleur différente. J'arrive a faire la boucle une ligne sur deux pour une plage de cellules indétérminées, mais je reste coincé sur la 1ère colonne ou alors ma boucle "dérive".
Je suis parti de cette routine:

Sub boucle_mise_en_gras1sur2()

Dim Ligne_Debut As Long
Ligne_Debut = 2
While Cells(Ligne_Debut, 1) <> ""
If Ligne_Debut Mod 2 = 0 Then
Cells(Ligne_Debut, 1).Interior.Color = RGB(200, 200, 0)
Else
Cells(Ligne_Debut, 1).Interior.Color = RGB(100, 0, 0)
End If
Ligne_Debut = Ligne_Debut + 1
Wend

End Sub

Il manque bien évidement l'info de la limite de colonne, mais si j'inclue une variable Colonne Début, le fait de devoir l'incrémenter décalle la colonne...
Merci d'avance !
 

Pièces jointes

bonjour,

Il suffit d'allonger la plage

Code:
Sub boucle_mise_en_gras1sur2()

Dim Ligne_Debut As Long
Ligne_Debut = 2
While Cells(Ligne_Debut, 1) <> ""
    If Ligne_Debut Mod 2 = 0 Then
    Range(Cells(Ligne_Debut, 1), Cells(Ligne_Debut, 5)).Interior.Color = RGB(200, 200, 0)
    Else
    Range(Cells(Ligne_Debut, 1), Cells(Ligne_Debut, 5)).Interior.Color = RGB(100, 0, 0)
    End If
    Ligne_Debut = Ligne_Debut + 1
Wend
   
End Sub
 
Bonjour,
Oui merci, je me suis peut être mal exprimé, je voudrais savoir comment déterminer automatiquement le nombre de colonne, si je colle un nouveau tableau avec 17 colonnes, je voudrais que la routine soit capable de determiner qu'il y a 17 colonne sans avoir à aller le saisir dans la procédure.
Avec la boucle while cells (Ligne_Debut, 1)<>"", je n'ai pas besoin de saisir le nombre de lignes, ma question est comment faire pour imbriquer le même système pour que les colonnes soit repérées automatiquement.
Merci d'avance !
 
Bonjour,
Ok, je cherchais dans VBA, et pas sur excel...
Disons que le fait de savoir le faire en VBA m'apporterais d'autres possibilités.
C'est pourquoi ça m'intéresse de savoir comment inclure la recherche du nbre de colonne dans la procédure.
 
Bonjour,

il suffit de rechercher la dernière cellule remplie (verticalement pour les lignes et horizontalement pour les colonnes)

NbLig = Cells(Rows.Count, 1).End(xlUp).Row ' nombre de lignes dans la colonne 1
NbCol = Cells(1, Columns.Count).End(xlToLeft).Column 'nombre de colonne 1iere ligne
 
Dernière édition:
Bonsoir GIBI,
Merci pour la réponse, je dois mal l'incorporer, ça ne marche pas dans la routine:

Sub engras()
Dim Ligne_Debut As Long
Dim NbCol As Long

Ligne_Debut = 2
NbCol = Cells(1, Columns.Count).End(xlToLeft).Column

While Cells(Ligne_Debut, NbCol) <> ""
If Ligne_Debut Mod 2 = 0 Then
Cells(Ligne_Debut, NbCol).Interior.Color = RGB(200, 200, 0)
Else
Cells(Ligne_Debut, NbCol).Interior.Color = RGB(100, 0, 0)
End If
Ligne_Debut = Ligne_Debut + 1
Wend

End Sub
 
Bonjour,
Erratum, ça marche !
Merci
Sub engras2()
Dim Ligne_Debut As Long
Dim nbcol As Long

Ligne_Debut = 2
nbcol = Cells(1, Columns.Count).End(xlToLeft).Column

While Cells(Ligne_Debut, 1) <> ""
If Ligne_Debut Mod 2 = 0 Then
Range(Cells(Ligne_Debut, 1), Cells(Ligne_Debut, nbcol)).Interior.Color = RGB(200, 200, 0)
Else
Range(Cells(Ligne_Debut, 1), Cells(Ligne_Debut, nbcol)).Interior.Color = RGB(100, 0, 0)
End If
Ligne_Debut = Ligne_Debut + 1
Wend

End Sub
 
- 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

Discussions similaires

Réponses
5
Affichages
830
Réponses
15
Affichages
614
Retour