Mise en forme de cellule (liste) à appliquer sur toute la ligne

Ctrl-Alt-Suppr

XLDnaute Junior
Bonjour,

Niveau débutant ,,, je tente de trouver sur la toile ce dont j'ai besoin :
Appliquer la mise en forme d'une cellule (à choix multiples) à toute la ligne correspondante,
Le fichier lié au poste sera sans doute + parlant que mes explications, mais en gros :

- je définis différentes ETAPES
- j'applique un format spécifique à chaque cellule
- dans un autre onglet, je définis un TABLEAU
- j'ai repris un code VBA qui "va chercher" le formatage couleur de chaque étape

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect([TABLEAU], Target) Is Nothing Then
   On Error Resume Next
   Target.Interior.ColorIndex = [ETAPES].Find(Target, LookAt:=xlWhole).Interior.ColorIndex
  End If
End Sub

Questions :
- comment obtenir un formatage complet (italique, gras …)
- comment l'appliquer à l'ensemble de la ligne du TABLEAU
- j'ai l'impression que ça fonctionne en 256 couleurs ou un truc du genre … une idée ?

Un grand merci par avance.
 

Pièces jointes

  • XL_DL_question_MEFC.xlsm
    18.7 KB · Affichages: 28

Efgé

XLDnaute Barbatruc
Re : Mise en forme de cellule (liste) à appliquer sur toute la ligne

Bonjour Ctrl-Alt-Suppr

Une proposition commentée:

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim T As Range
 If Not Intersect([TABLEAU], Target) Is Nothing Then
   On Error Resume Next
   'On déclare T comme la cellulecorrespondente dans la liste Etapes
   Set T = [ETAPES].Find(Target, LookAt:=xlWhole)
   'Avec la cellule modifiée (agrandie sur une ligne et de 5 colonnes)
    With Target.Resize(1, 5)
        'on recopie tout ce que l'on veux
        'Couleur
        .Interior.ColorIndex = T.Interior.ColorIndex
        'Police gras
        .Font.Bold = T.Font.Bold
        'Police italique
        .Font.Italic = T.Font.Italic
        'Etc....
    End With
  End If
End Sub

Cordialement
 

Ctrl-Alt-Suppr

XLDnaute Junior
Re : Mise en forme de cellule (liste) à appliquer sur toute la ligne

Merci, c'est vraiment pas mal
... j'ai presque tout compris au point de savoir le refaire (presque ^^) !

Un petit complément, si ce n'est pas trop demander.
Dans mon fichier définitif, les ETAPES sont dans la 2ème colonne
Comment faire pour appliquer la mise en forme à partir de la colonne d'avant
(en clair une sorte de : Target.Resize(1, de -1 à +56) ) dans mon futur fichier
J'ai tenté de glisser un Target.Offset(0, -1) ci et là, mais sans succès.
 

Efgé

XLDnaute Barbatruc
Re : Mise en forme de cellule (liste) à appliquer sur toute la ligne

Re
On ne diras jamais assez que le fichier exemple doit être re-pré-sen-ta-tif du problème :rolleyes:

Pour ta nouvelle demande:
Il faut décaler (Offset) de 0 ligne et - 1 colonne et ensuite redimentionner de 1 ligne et 57 colonnes soit :
VB:
 With Target.Offset(0,-1).Resize(1, 57)

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 726
Membres
110 552
dernier inscrit
jasson