Mise en couleur Zone de texte

Résolu
TintinU2 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   -  
TintinU2 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
    1. TintinU2 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   5
       
      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
  2. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
    1. TintinU2 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   5
       
      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
  3. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
    1. TintinU2 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   5
       
      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
  4. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
    1. TintinU2 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   5
       
      Merci pour ta réponse Frenchie83

      ça fonctionne parfaitement :)
      Merci
      0