Mise en couleur Zone de texte

Résolu/Fermé
TintinU2 Messages postés 79 Date d'inscription lundi 26 octobre 2015 Statut Membre Dernière intervention 8 juillet 2016 - 3 nov. 2015 à 17:15
TintinU2 Messages postés 79 Date d'inscription lundi 26 octobre 2015 Statut Membre Dernière intervention 8 juillet 2016 - 12 nov. 2015 à 10:10
Bonjour à tous,

J'ai une petite question pour vous.
Voici mon problème :
J'ai une image dans une feuille et par dessus, je met une zone de texte.
Dans cette zone de texte, je récupère un numéro qui est dans une autre feuille.
ça me donne donc : ZoneTexte 1 = 'Feuil2'!M260

Maintenant, j'aimerai mettre une couleur de fond, en fonction du nombre indiqué et en fonction du nombre de mois que j'ai sélectionné.
C'est à dire :

Si 1 mois
Si nbr= 1 ou 2 alors vert
Si nbr= 3 ou 4 alors orange
Si nbr= 5 ou plus alors rouge

Si 2 mois
Si nbr= 1 ou 3 alors vert
Si nbr= 4 ou 5 alors orange
Si nbr= 6 ou plus alors rouge

Si 3 mois
Si nbr= 1 ou 4 alors vert
Si nbr= 5 ou 6 alors orange
Si nbr= 7 ou plus alors rouge

Et ainsi de suite....

Ma question :
Comment peut-on récupérer le nombre que j'ai dans ma ZoneText1 ?
Comment je peux faire pour effectuer un couleur en fonction du mois ?

Je pensais faire, pour le vert : entre 1 et 1+mois
Pour le orange : entre 2+mois et 3+mois
Pour le rouge : > 4+mois

Merci d'avance pour vos réponses.
Et bonne soirée à tous :)

TintinU2

4 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
4 nov. 2015 à 19:30
Bonsoir
Une proposition à compléter et à adapter,
avec le mois en A1 de la feuille 1 et le nombre en M260 de la feuille 2( la même valeur que dans la textbox1)
Sub CouleurTextBox()
    Application.ScreenUpdating = False
    Mois = Sheets("Feuil1").[A1]
    Nbr = Sheets("Feuil2").[M260]
    Select Case Mois
        Case 1
            Select Case Nbr
                Case 1, 2
                    TextBox1.BackColor = 65280
                Case 3, 4
                    TextBox1.BackColor = 33023
                Case Is > 4
                    TextBox1.BackColor = 255
            End Select
        Case 2
            Select Case Nbr
                Case 1, 3
                    TextBox1.BackColor = 65280
                Case 4, 5
                    TextBox1.BackColor = 33023
                Case Is > 5
                    TextBox1.BackColor = 255
            End Select
        Case 3
            Select Case Nbr
                Case 1, 4
                    TextBox1.BackColor = 65280
                Case 5, 6
                    TextBox1.BackColor = 33023
                Case Is > 6
                    TextBox1.BackColor = 255
            End Select
            
        ' ainsi de suite
        
    End Select
End Sub
Cdlt
0
TintinU2 Messages postés 79 Date d'inscription lundi 26 octobre 2015 Statut Membre Dernière intervention 8 juillet 2016 5
5 nov. 2015 à 10:19
Bonjour Frenchie83,

Merci beaucoup pour ta réponse.

Cependant, après avoir adapter ton code avec les éléments de mon classeur, excel me met une erreur sur les "TextBox1.BackColor = ...".

Je pense aussi que je n'affecte pas sur la bonne feuille
Mon mois ce trouve sur la feuil1
Mon nombre ce situe sur la feuil2
Et ma zone de texte ce situe sur ma feuil3


De plus, comme j'ai à peu près 90 TextBox sur ma feuille, je voudrais savoir si il n'y a pas une manière plus simple d'effectuer le code plutôt que de répéter le code 90 fois.

Merci d'avance
TintinU2
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
Modifié par Frenchie83 le 6/11/2015 à 03:53
Bonjour
Comme précédemment, à compléter et à adapter selon vos données.
Rappel:
le mois en A1 de la feuille 1
le nombre en M260 de la feuille 2
et 90 textbox sur la feuille 3

Sub CouleurTextBox()
    Application.ScreenUpdating = False
    Mois = Sheets("Feuil1").[A1]
    Nbr = Sheets("Feuil2").[M260]
    Select Case Mois
        Case 1
            Select Case Nbr
                Case 1, 2
                    vert
                Case 3, 4
                    Orange
                Case Is > 4
                    Rouge
            End Select
        Case 2
            Select Case Nbr
                Case 1, 3
                    vert
                Case 4, 5
                    Orange
                Case Is > 5
                    Rouge
            End Select
        Case 3
            Select Case Nbr
                Case 1, 4
                    vert
                Case 5, 6
                    Orange
                Case Is > 6
                    Rouge
            End Select
            
        ' ainsi de suite
        
    End Select
End Sub

Sub vert()
    For i = 1 To 90
        Sheets("Feuil3").OLEObjects("TextBox" & i).Object.BackColor = 65280
    Next i
End Sub

Sub Orange()
    For i = 1 To 90
        Sheets("Feuil3").OLEObjects("TextBox" & i).Object.BackColor = 33023
    Next i
End Sub

Sub Rouge()
    For i = 1 To 90
        Sheets("Feuil3").OLEObjects("TextBox" & i).Object.BackColor = 255
    Next i
End Sub

Cdlt
0
TintinU2 Messages postés 79 Date d'inscription lundi 26 octobre 2015 Statut Membre Dernière intervention 8 juillet 2016 5
9 nov. 2015 à 10:27
Bonjour Frenchie83,

Merci pour ta réponse
Je pense que j'ai oublié de te préciser un petit détail.
Pour chaque zone de texte(les 90), le nombre provient d'une cellule différente

Par exemple :
Zone texte 1 = M20
Zone texte 2 = M50
Zone texte 3 = M75
Zone texte 4 = M120
....

Penses-tu que je dois faire un boucle pour chaque numéro ?

Merci d'avance
TintinU2
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
10 nov. 2015 à 08:12
Bonjour
Le plus simple, ajoutez une feuille que vous nommerez "ListeZoneTexte"
En colonne A, de A1 à A90, énumérez les zones de texte "Zone texte 1, Zone texte 2 etc.. et en colonne B mettez les cellules correspondantes en B1: M20, en B2: M50, en B3: M75, etc...
Ensuite remplacez le code précédent par celui-ci
Sub CouleurTextBox()
    Application.ScreenUpdating = False
    Mois = Sheets("Feuil1").[A1]
    
    For i = 1 To 90
        Nbr = Sheets("Feuil2").Range(Sheets("ListeZoneTexte").Cells(i, 2))
        Select Case Mois
            Case 1
                Select Case Nbr
                    Case 1, 2
                        vert
                    Case 3, 4
                        Orange
                    Case Is > 4
                        Rouge
                End Select
            Case 2
                Select Case Nbr
                    Case 1, 3
                        vert
                    Case 4, 5
                        Orange
                    Case Is > 5
                        Rouge
                End Select
            Case 3
                Select Case Nbr
                    Case 1, 4
                        vert
                    Case 5, 6
                        Orange
                    Case Is > 6
                        Rouge
                End Select
                
            ' ainsi de suite
            
        End Select
    Next i
End Sub

Cdlt
0
TintinU2 Messages postés 79 Date d'inscription lundi 26 octobre 2015 Statut Membre Dernière intervention 8 juillet 2016 5
10 nov. 2015 à 10:12
Bonjour Frenchie83,

Merci pour ta réponse.
Je vois ce que tu veux faire. Cependant j'ai un problème avec la propriété "OLEObjects"

Pour être sur que je n'ai pas fait d'erreur, je te transmet mon fichier de test :
https://www.cjoint.com/c/EKkjicGRsLF

Merci d'avance

TintinU2
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
10 nov. 2015 à 18:12
Bonsoir
Ca ne fonctionne pas, parce que je n'ai pas pri les mêmes textbox que vous.
Avec ceci, ça devrait aller. (Pour la couleur orange, j'ai pas trop cherché)
Sub CouleurTextBox()
    Application.ScreenUpdating = False
    Mois = Sheets("Feuil Affichage").[B2]
    
    For i = 1 To 15
        Nbr = Sheets("Feuil Nbr").Range(Sheets("ListeZoneTexte").Cells(i, 2))
        Select Case Mois
            Case 1
                Select Case Nbr
                    Case 1, 2
                        vert
                    Case 3, 4
                        Orange
                    Case Is > 4
                        Rouge
                End Select
            Case 2
                Select Case Nbr
                    Case 1, 3
                        vert
                    Case 4, 5
                        Orange
                    Case Is > 5
                        Rouge
                End Select
            Case 3
                Select Case Nbr
                    Case 1, 4
                        vert
                    Case 5, 6
                        Orange
                    Case Is > 6
                        Rouge
                End Select
                
            ' ainsi de suite
            
        End Select
    Next i
End Sub

Sub vert()
    For i = 1 To 15
        Sheets("Feuil Affichage").Shapes("ZoneTexte " & i).Select
        With Selection.Interior
            .ColorIndex = 4
        End With
    Next i
End Sub
Cdlt
Sub Orange()
    For i = 1 To 15
        Sheets("Feuil Affichage").Shapes("ZoneTexte " & i).Select
        With Selection.Interior
            .ColorIndex = 22
        End With
    Next i
End Sub

Sub Rouge()
    For i = 1 To 15
        Sheets("Feuil Affichage").Shapes("ZoneTexte " & i).Select
        With Selection.Interior
            .ColorIndex = 3
        End With
    Next i
End Sub
0
TintinU2 Messages postés 79 Date d'inscription lundi 26 octobre 2015 Statut Membre Dernière intervention 8 juillet 2016 5
12 nov. 2015 à 10:10
Merci pour ta réponse Frenchie83

ça fonctionne parfaitement :)
Merci
0