/ / Comment colorer des plages de cellules spécifiques en fonction du nombre de lignes utilisées dans Excel VBA - excel, vba, excel-vba

Comment colorer des plages de cellules spécifiques en fonction du nombre de lignes utilisées dans Excel VBA - excel, vba, excel-vba

Je m'excuse si cela a déjà été répondu, mais je n'ai pas eu la chance de trouver une solution viable à mon dilemme.

J'essaie de réparer / améliorer l'un des outilsnous utilisons en colorant différentes plages des couleurs différentes, mais uniquement les lignes utilisées par les données renseignées. J'ai pu trouver une solution qui fonctionne mais, pour une raison quelconque, elle colore beaucoup plus de lignes que je ne le souhaite. Si je ne remplis que quelques lignes, il colore plus de 80 lignes. Plus je utilise de lignes, plus il y a de lignes et plus je n’ai pas eu la chance de comprendre pourquoi.

L'outil remplit les colonnes A-AS et commence à la ligne 9. Il contient les données d'un autre onglet. Mes tests ont été infructueux pour le moins. Voici à quoi ressemble l'outil:

Citation Builder:

Constructeur de devis

Voici un extrait du code avec lequel je travaille:

    " Color used range of cells
Sheet1.Range("A9:G9" & LastRowNo).Interior.Color = RGB(255, 242, 204)
Sheet2.Range("A9:G9" & LastRowNo).Interior.Color = RGB(255, 242, 204)

Sheet1.Range("H9:M9" & LastRowNo).Interior.Color = RGB(252, 228, 214)
Sheet2.Range("H9:M9" & LastRowNo).Interior.Color = RGB(252, 228, 214)

Sheet1.Range("N9:AI9" & LastRowNo).Interior.Color = RGB(226, 239, 218)
Sheet2.Range("N9:AI9" & LastRowNo).Interior.Color = RGB(226, 239, 218)

Sheet1.Range("AJ9:AS9" & LastRowNo).Interior.ColorIndex = 17
Sheet2.Range("AJ9:AS9" & LastRowNo).Interior.ColorIndex = 17

S'il vous plaît laissez-moi savoir si vous avez besoin de plus d'informations, j'ai essayé d'être aussi précis que possible.

Pour clarifier à tous ceux qui essaient d'aider avecce problème. Le code ci-dessus fonctionne sauf qu'il colore plus de lignes que nécessaire. J'en ai seulement besoin pour colorer les lignes utilisées à partir de la ligne 9, en fonction du nombre de lignes renseignées par l'utilisateur. Cela pourrait être aussi peu qu'une ligne à plus de 200 lignes. Fondamentalement, quel que soit le nombre de lignes nécessaires à l'utilisateur. Merci à tous d'avance.

Voici les changements que j'ai apportés qui sont beaucoup plus proches de ce dont j'ai besoin, mais qui ne sont pas encore complets:

    " Color used range of cells
Sheet1.Range("A9:G1" & LastRowNo).Interior.Color = RGB(255, 242, 204)
Sheet2.Range("A9:G1" & LastRowNo).Interior.Color = RGB(255, 242, 204)

Sheet1.Range("H9:M1" & LastRowNo).Interior.Color = RGB(252, 228, 214)
Sheet2.Range("H9:M1" & LastRowNo).Interior.Color = RGB(252, 228, 214)

Sheet1.Range("N9:AI1" & LastRowNo).Interior.Color = RGB(226, 239, 218)
Sheet2.Range("N9:AI1" & LastRowNo).Interior.Color = RGB(226, 239, 218)

Sheet1.Range("AJ9:AS1" & LastRowNo).Interior.ColorIndex = 17
Sheet2.Range("AJ9:AS1" & LastRowNo).Interior.ColorIndex = 17

Réponses:

0 pour la réponse № 1

D'accord, j'ai pu trouver une solution quitravaille pour ma situation. J'ai dû ajouter une instruction If car elle ne "colorerait pas la première ligne s'il n'y avait qu'une seule ligne de données. Désormais, elle fonctionne exactement comme je le voulais.

Voici le code que j'ai utilisé:

" Color used range of cells
If LastRowNo = 2 Then
Sheet1.Range("A9:G9").Interior.Color = RGB(255, 242, 204)
Sheet2.Range("A9:G9").Interior.Color = RGB(255, 242, 204)

Sheet1.Range("H9:M9").Interior.Color = RGB(252, 228, 214)
Sheet2.Range("H9:M9").Interior.Color = RGB(252, 228, 214)

Sheet1.Range("N9:AI9").Interior.Color = RGB(226, 239, 218)
Sheet2.Range("N9:AI9").Interior.Color = RGB(226, 239, 218)

Sheet1.Range("AJ9:AS9").Interior.ColorIndex = 17
Sheet2.Range("AJ9:AS9").Interior.ColorIndex = 17
Else
Sheet1.Range("A9:G" & LastRowNo + 7).Interior.Color = RGB(255, 242, 204)
Sheet2.Range("A9:G" & LastRowNo + 7).Interior.Color = RGB(255, 242, 204)

Sheet1.Range("H9:M" & LastRowNo + 7).Interior.Color = RGB(252, 228, 214)
Sheet2.Range("H9:M" & LastRowNo + 7).Interior.Color = RGB(252, 228, 214)

Sheet1.Range("N9:AI" & LastRowNo + 7).Interior.Color = RGB(226, 239, 218)
Sheet2.Range("N9:AI" & LastRowNo + 7).Interior.Color = RGB(226, 239, 218)

Sheet1.Range("AJ9:AS" & LastRowNo + 7).Interior.ColorIndex = 17
Sheet2.Range("AJ9:AS" & LastRowNo + 7).Interior.ColorIndex = 17
End If

Si cela aide quelqu'un d'autre, cela en vaut la peineeffort. S'il existe d'autres solutions ou un meilleur moyen de le faire, veuillez ajouter vos informations. Je viens souvent sur ce site pour trouver des solutions aux problèmes rencontrés et le trouve parmi les sites les plus utiles du moment. Merci à ceux qui ont offert leur contribution, cela a été utile.