Problème boucle While wend

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

  • While-Wend.xlsm
    15.7 KB · Affichages: 21

M12

XLDnaute Accro
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
 

Attila451

XLDnaute Occasionnel
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 !
 

Attila451

XLDnaute Occasionnel
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.
 

GIBI

XLDnaute Impliqué
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:

Attila451

XLDnaute Occasionnel
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
 

Attila451

XLDnaute Occasionnel
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
 

Statistiques des forums

Discussions
311 711
Messages
2 081 792
Membres
101 817
dernier inscrit
carvajal