Compléter des arguments dans une macro

degap05

XLDnaute Impliqué
Bonjour, je souhaite compléter la macro ci-dessous, mais après plusieurs essais, cela ne fonctionne pas. Voici la macro, positionné dans ThisWorkBook, qui fonctionne parfaitement, avec un seul argument:

'coloration de ligne en fonction de la valeur en colonne "I"
Private Sub Workbook_Open()
Dim Cell As Range
For Each Cell In Range("I:I")
With Cell
If .Value = "0" Then
Range(Cells(.Row, 1), Cells(.Row, 9)).Interior.ColorIndex = 35
End If
End With
Next Cell
End Sub

Dans la ligne:

If .Value = "0" Then

Comment indiquer tous les chiffres. J'ai essayé 0,1,2,3, etc...0;1;2;3; etc..., mais aucune de ces possibilités ne fonctionne. Afin que quelque soit le chiffre ou le nombre (ex: 0 ou 123, 4563) indiqué dans les cellules de la colonne "I", la macro fonctionne.

Merci de votre aide.
 

Pierrot93

XLDnaute Barbatruc
Re : Compléter des arguments dans une macro

Bonjour Degap

regarde le code ci-dessous, teste si la cellule est numérique :

Code:
Private Sub Workbook_Open()
Dim Cell As Range
For Each Cell In Range("I1:I" & Range("I65536").End(xlUp).Row)
    If IsNumeric(Cell.Value) Then
        Range(Cells(Cell.Row, 1), Cells(Cell.Row, 9)).Interior.ColorIndex = 35
    End If
Next Cell
End Sub

bon après midi
@+
 

ROGER2327

XLDnaute Barbatruc
Re : Compléter des arguments dans une macro

Bonjour !
S'il s'agit de colorier les lignes en fonction de la valeur dans la colonne I, ce code doit convenir​
Code:
Private Sub Workbook_Open()
Dim Cell As Range
    For Each Cell In Range("I:I")
        If Not IsEmpty(Cell) Then
            Select Case Cell.Value
                Case 0: Range(Cell.Offset(0, -8), Cell).Interior.ColorIndex = 35
                Case 1: Range(Cell.Offset(0, -8), Cell).Interior.ColorIndex = 53
                Case 2: Range(Cell.Offset(0, -8), Cell).Interior.ColorIndex = 3
                Case 3: Range(Cell.Offset(0, -8), Cell).Interior.ColorIndex = 1
                Case 4: Range(Cell.Offset(0, -8), Cell).Interior.ColorIndex = 6
                Case 5: Range(Cell.Offset(0, -8), Cell).Interior.ColorIndex = 20
                Case 6: Range(Cell.Offset(0, -8), Cell).Interior.ColorIndex = 30
                Case 7: Range(Cell.Offset(0, -8), Cell).Interior.ColorIndex = 4
                Case 8: Range(Cell.Offset(0, -8), Cell).Interior.ColorIndex = 5
                Case 9: Range(Cell.Offset(0, -8), Cell).Interior.ColorIndex = 8
                Case Else: Range(Cell.Offset(0, -8), Cell).Interior.ColorIndex = xlColorIndexAutomatic
            End Select
        End If
    Next Cell
End Sub
S'il s'agit de donner la même couleur indépendamment de la valeur de la cellule I, pour autant que cette valeur soit une entier de 1 à 9 alors ceci doit convenir​
Code:
Private Sub Workbook_Open()
Dim Cell As Range
    For Each Cell In Range("I:I")
        If Not IsEmpty(Cell) Then
            Select Case Cell.Value
                Case 0 To 9: Range(Cell.Offset(0, -8), Cell).Interior.ColorIndex = 35
                Case Else: Range(Cell.Offset(0, -8), Cell).Interior.ColorIndex = xlColorIndexAutomatic
            End Select
        End If
    Next Cell
End Sub
Voilà !
Bonne journée,
ROGER2327
 

degap05

XLDnaute Impliqué
Re : Compléter des arguments dans une macro

Re-bonjour,

Je reviens vers Pierrot93, s'il est toujours là....
Ta solution fonctionne parfaitement, comme je te l'ai déjà transmis.
Je constate une chose bizarre.

J'ai ajouté à mon classeur un onglet que j'ai intitulé "Accueil", pour pouvoir y appeler une listbox qui me permettra de choisir l'onglet ou je souhaite intervenir (une trentaine, qui seront cachés).

Alors qu'aucune donnée ne se trouve indiquée, sur cette feuille "Accueil", la coloration se fait sur la première ligne (Range("I1:I"). J'ai changé le format des cellules en "Texte", mais idem ?

Merci.
 

Pierrot93

XLDnaute Barbatruc
Re : Compléter des arguments dans une macro

Re

comme le nom de la feuille n'est pas précisée, les instructions s'exécutent sur la feuille active, modifies comme suit :

Code:
Private Sub Workbook_Open()
Dim Cell As Range
With Sheets("NomDeLaFeuille")
For Each Cell In .Range("I1:I" & .Range("I65536").End(xlUp).Row)
    If IsNumeric(Cell.Value) Then
        .Range(.Cells(Cell.Row, 1), .Cells(Cell.Row, 9)).Interior.ColorIndex = 35
    End If
Next Cell
End With
End Sub

@+
 

degap05

XLDnaute Impliqué
Re : Compléter des arguments dans une macro

Re

attention, si tu risques d'avoir des cellules vides, modifies le test comme suit :

Code:
If IsNumeric(Cell.Value) And Not IsEmpty(Cell.Value) Then

@+

Je vais modifier en ce sens pour essai.
Je te joins mon fichier ou j'avance.

Merci.
 

Pièces jointes

  • EssaiDegap.zip
    26.4 KB · Affichages: 24
  • EssaiDegap.zip
    26.4 KB · Affichages: 22
  • EssaiDegap.zip
    26.4 KB · Affichages: 22

degap05

XLDnaute Impliqué
Re : Compléter des arguments dans une macro

Re,

J'ai modifié selon tes indications et plus de problème sur ma page "Accueil".
Par contre, sur un onglet caché, puis sélectionné et mis à jour, la macro de coloration ne fonctionne pas. Est-ce du à cette fonction d'onglet caché?

A+
 

Pierrot93

XLDnaute Barbatruc
Re : Compléter des arguments dans une macro

Re,

chez moi pas de souci (excel2003), fonctionne même sur les onglets masqués... Tes feuilles ne sont pas protégées dans ton fichier original ? Quand tu dis cela ne fonctionne pas, cela veut dire pas de résultat ou message d'erreur ? A notre que dans ton fichier joint, le nom de la feuille cible n'est pas précisé...
 

degap05

XLDnaute Impliqué
Re : Compléter des arguments dans une macro

Re,

chez moi pas de souci (excel2003), fonctionne même sur les onglets masqués... Tes feuilles ne sont pas protégées dans ton fichier original ? Quand tu dis cela ne fonctionne pas, cela veut dire pas de résultat ou message d'erreur ? A notre que dans ton fichier joint, le nom de la feuille cible n'est pas précisé...

Bonsoir,

"Tes feuilles ne sont pas protégées dans ton fichier original ? "
- Non elles ne sont pas protégées,

"Quand tu dis cela ne fonctionne pas, cela veut dire pas de résultat ou message d'erreur ? "
- pas de résultat, la ligne ne se colore pas,

"A noter que dans ton fichier joint, le nom de la feuille cible n'est pas précisé..."
- comme il va y avoir un trentaine de feuilles cibles, il faudrait que la macro s'exécute sur toutes les feuilles, sauf "Accueil".

A+
 

Pierrot93

XLDnaute Barbatruc
Re : Compléter des arguments dans une macro

Re,

essaie comme ceci :

Code:
Option Explicit
Private Sub Workbook_Open()
Dim sh As Worksheet, Cell As Range
For Each sh In Worksheets
    If sh.Name <> "Accueil" Then
        For Each Cell In sh.Range("I1:I" & sh.Range("I65536").End(xlUp).Row)
            If IsNumeric(Cell.Value) And Not IsEmpty(Cell.Value) Then
                sh.Range(sh.Cells(Cell.Row, 1), sh.Cells(Cell.Row, 9)).Interior.ColorIndex = 35
            End If
        Next Cell
    End If
Next sh
End Sub

bonne soirée
@+
 

degap05

XLDnaute Impliqué
Re : Compléter des arguments dans une macro

Bonjour, Pierrot93,
Je te réponds un peu tardivement, car ce matin, je n'ai pas eu le temps de mettre en place ta dernière solution. Maintenant c'est fait et c'est parfait. J'ai ajouté quelques feuilles et mêmes celles-ci cachées ta macro fonctionne "au poil"

Encore un grand merci.:)

Salut.
 

Statistiques des forums

Discussions
312 430
Messages
2 088 362
Membres
103 830
dernier inscrit
fombarone