XL 2019 MFC avec 3 conditions

melltel

XLDnaute Junior
Bonjour,
svp je reviens vers vous pur avoir une solution.
j'ai crée un tableau avec des valeurs et j'aimerais faire une mise en forme conditionnelle à celui ci de telle sorte que:
quand on clique sur une cellule de poids, colonne k (fusionné), on obtient automatiquement la ligne du tableau coloré et,
la valeur de la cellule(Poid) est automatiquement remplie dans sa cellule poids retenu (colonne M fusionné).

ce que j'ai fais jusqu'ici en VBA ne marche pas . please help!
merci.
 

melltel

XLDnaute Junior
Avec vba et des cellules fusionnées tu cherches un gros challenge qu'il faut bien maitriser pour obtenir le résultat souhaité : as-tu vraiment besoin de fusionner ou as-tu besoin de vba pour faire une MFC ?
Bonsoir gbinforme,
j'ai vraiment besoin de vba pour faire cette mise en forme conditionnelle car elle inclus 3 conditions( le clic sur la cellule, la coloration de la cellule concernée et la copie de la valeur sur la cellule de droite)
Cependant je peux utiliser les cellules sans fusion.
Merci
 

gbinforme

XLDnaute Impliqué
Bonsoir,

Si j'ai bien compris ton souhait, je te propose ce code à mettre dans la feuille concernée.
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 11 Then     ' 11 = "K"
        Rows(Target.Row).Interior.Color = 192
        Cells(Target.Row, "M").Value = Cells(Target.Row, "K").Value
    End If
End Sub
Bien entendu tu mdifies la couleur que tu veux utiliser

Tu peux revenir en arrière avec un double clic sur la cellule avec ce code
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 11 Then     ' 11 = "K"
        Cancel = True
        Rows(Target.Row).Interior.Pattern = xlNone
        Cells(Target.Row, "M").Value = ""
    End If
End Sub
 
Dernière édition:

melltel

XLDnaute Junior
Bonsoir,

Si j'ai bien compris ton souhait, je te propose ce code à mettre dans la feuille concernée.
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 11 Then     ' 11 = "K"
        Rows(Target.Row).Interior.Color = 192
        Cells(Target.Row, "M").Value = Cells(Target.Row, "K").Value
    End If
End Sub
Bien entendu tu mdifies la couleur que tu veux utiliser
merci pour ton retour gbinforme!
 

melltel

XLDnaute Junior
merci pour ton retour gbinforme!
Bonsoir gbinforme,
stp je reviens vers toi pour avoir un petite modification sur ce document.
quand on clique sur le poids, ça colore la ligne en jaune et ça remplie automatiquement la valeur du poids dans la colonne de droite ( poids retenu)
Mais stp je n'arrive pas à modifier le clique. je souhaite plutôt faire le clique sur les lignes de gauche (B) qui contiennent le texte. et non plus sur les poids .
de telle sorte que lorsque je clique sur la ligne de gauche, sa colore la ligne B , la valeur de son poids et sa recopie cette valeur dans la colonne de droite(poids retenu) .

Espérant que tu me comprenne,
Merci déja!

voici un exemple de mon code qui ne marche pas
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, [B10:B40]) Is Nothing Then
'Range("C10:C40").Select
'Selection.Locked = True
'MsgBox MSG, vbExclamation, "Ne pas modifier les cases en jaune"

Dim Ligne%: Ligne = Target.Row
Cells(Ligne, "B").Offset(0, 1).Select ' Le select est obligatoire sinon on selectionne une cellule
Selection = Cells(Ligne, "B") ' et non les cellules fusionnées
Mémorisé = Cells(Ligne, "C") ' Mémorisation de la ligne cliquée
While Cells(Ligne, "C") <> "" ' Recherche vers le haut de la première cellule vide
Ligne = Ligne - 1
Wend
Ligne = Ligne + 1
While Cells(Ligne, "C") <> "" ' On traite vers le bas jusqu'à la première cellule vide
If Cells(Ligne, "C") <> Mémorisé Then
Range("B" & Ligne & ":C" & Ligne).Interior.Color = xlNone
Else
Range("B" & Ligne & ":C" & Ligne).Interior.Color = RGB(255, 255, 0)
End If
Ligne = Ligne + 1
Wend
End If
End Sub
 

Pièces jointes

  • ProTaxonomie.xlsm
    33.6 KB · Affichages: 4
Dernière édition:

gbinforme

XLDnaute Impliqué
Mais stp je n'arrive pas à modifier le clique. je souhaite plutôt faire le clique sur les lignes de gauche (B) qui Espérant que tu me comprenne,
Je pense avoir compris et avec cette modification cela devrait fonctionner
VB:
    If Not Intersect(Target, Range("B:B")) Is Nothing Then
Tu as bien compris que le fait d'utiliser des fusions est un vrai casse tête en VBA:mad:
 

Pièces jointes

  • ProTaxonomie.xlsm
    31.8 KB · Affichages: 3

melltel

XLDnaute Junior
Merci du retour
Dans ton code tu peux remplacer
VB:
         While Cells(Ligne, "C") <> ""   ' Recherche vers le haut de la première cellule vide
            Ligne = Ligne - 1
        Wend
        Ligne = Ligne + 1
par
Code:
        Ligne = Selection.Row
désolé de t'agacer encore.
j'ai tout organisé dans mon tableau mais il y'a un dernier soucis qui surgis!
le tableau n'étant plus fusionné, la sélection ne s'applique pas uniquement sur la ligne qu'il faut mais prend toutes les lignes et poids contenant le même numéro.
Exemple : dans un secteur( sensibilité client) on a plusieurs lignes avec le même poids. Quand je clique sur la ligne, uniquement la ligne sélectionnée et son poids devraient normalement changer de coloration et le poids s'affiche dans la colonne Poids retenu. ce qui n'est pas le cas, sa sélectionne toutes les valeurs avec le même poids.

stp on gère ou ignore les doublons de poids comment? de manière a considérer chaque ligne ou cellule de façon unique.
1665067715350.png
 

Discussions similaires

Réponses
11
Affichages
1 K

Statistiques des forums

Discussions
311 720
Messages
2 081 925
Membres
101 841
dernier inscrit
ferid87