Modifier valeur d'une cellule selon la valeur d'une autre avec plusieurs If

bonsoir le Forum,

Tout d'abord je voudrais souhaiter une excellente année 2020 à l'ensemble des personnes qui font vivre ce forum et les remercier pour leur disponibilité ainsi que leur aide précieuse.

j'ai besoin, une fois de plus, de votre aide pour résoudre mon problème qui est le suivant:

je voudrais pouvoir modifier la valeur d'une cellule d'après la valeur 'une autre. la valeur de la 1ère cellule est déterminée via une listebox la 2ème selon le choix sélectionné dans la 1ère.

je joint un petit fichier afin, je l'espère, être plus clair.

cordialement.

61essai.xlsm (21.93 Ko)

Bonjour

Il serais plus logique que chaque couleur soit associée au mot, donc une table de référence de 2 colonnes et non une

Et pas besoin de multi SI ou de boucle une simple utilisation des fonctions INDEX EQUIV (MATCH en VBA) suffit à récupérer le mot à inscrire...

merci Chris pour ta réponse.

mais je dois avouer que je n'ai pas compris oui pour chaque valeurs le texte sera différent et toujours dans la même cellule.

peux_tu me montrer dans le fichier joint la solution que tu propose en VBA.

d'avance merci.

quelqu’un peut m'expliquer la réponse de Chris ?

RE

Ci-joint avec tableau structuré pour l'évolutivité

160liste.xlsm (22.81 Ko)

tout d'abord merci

c'est du très lourd et çà fonctionne du tonnerre dans le fichier joint

mais là il faut que je prenne un peu de temps pour être sûr de pouvoir l'appliquer à mon fichier je vais voir çà demain. Mais je reviendrai vers vous pour dire si j'ai réussi à adapter.

cordialement

bonjour tout le monde,

je coince pour adapter à mon fichier j'ai une erreur 424 avec objet requis à la ligne With.

j'ai modifier le code comme suit:

[code]Private Sub Retrofit_Click()

' pour valider le choix de la valeur par l'utilisateur, on va ailleurs

Feuil1.Range("E7").Activate

End Sub

Private Sub Retrofit_Change()

Sheets("Enquête").Range("O2").Value = Retrofit.Value

If Feuil1.Range("O2") <> "" Then

With [T_RETROFIT].ListObject

Feuil1.Range("L6").Value = WorksheetFunction.Index(.ListColumns(2).Range, WorksheetFunction.Match(Liste.Value, .ListColumns(1).Range, 20), 1)

End With

Else

Feuil1.Range("L6").ClearContents

End If

End Sub

Public Sub Retrofit_Initialize()

Sheets("Enquête").Retrofit.ListFillRange = "Retrofit!" & [T_RETROFIT].ListObject.ListColumns(1).DataBodyRange.Address

End Sub[code]

je loupe quelque chose mais quoi?

merci

Bonjour

T_RETROFIT est-il bien le nom d'un tableau structuré ?

Tu as laissé Liste.Value dans la formule au lieu de Retrofit.Value et mis 20 au lieu de 0 dans Match

bonsoir,

tout d'abord merci pour ton aide. j'ai modifier

Private Sub Retrofit_Click()
    ' pour valider le choix de la valeur par l'utilisateur, on va ailleurs
    Feuil1.Range("E7").Activate
End Sub

Private Sub Retrofit_Change()
    Sheets("Enquête").Range("O2").Value = Retrofit.Value
    If Feuil1.Range("O2") <> "" Then
    With [T_RETROFIT].ListObject
        Feuil1.Range("L6").Value = WorksheetFunction.Index(.ListColumns(2).Range, WorksheetFunction.Match(Retrofit.Value, .ListColumns(1).Range, 20), 1)
    End With
    Else
    Feuil1.Range("L6").ClearContents
End If
End Sub

Public Sub Retrofit_Initialize()
Sheets("Enquête").Retrofit.ListFillRange = "Retrofit!" & [T_RETROFIT].ListObject.ListColumns(1).DataBodyRange.Address
End Sub

20 au lieu de 0 c'est parce-que mon tableau commence en ligne 20.

pour le tableau je suis passé par insérer un tableau je ne sais pas si il faut faire autrement.

tableau

cordialement.

bon j'ai trouvé où çà pêche le tableau est nommé dans la cellule devant la barre des formules "T_couleurs" quand tu le sélection.

mon problème est que je ne sais pas comment il faut procéder pour faire cela j'ai essayer de taper T_RETROFIT directement mais ça fonctionne pas.

cordialement.

RE

Match, ou EQUIV en français, a le 3ème argument à 0 quand on cherche une valeur exacte

La fonction renvoie le numéro de ligne qu'elle trouve en effectuant la recherche

Tu sembles mélanger les choses. Regarde l'aide en ligne sur le sfonctions INDEX et EQUIV : VBA ne fait que les invoquer sans en changer le fonctionnement

Pour le tableau : à gauche de l'onglet Outils de tableau, qui s'affiche quand la cellule active est dans le tableau, tu as le nom du Tableau : c'est qu'il faut le modifier juste après sa création.

Si tu as cafouillé va voir dans Formules, Gestionnaire de noms ce qui s'y trouve et fait éventuellement le ménage.

désolé mais je suis novice et essai d'apprendre et comprendre petit à petit.

si je peux encore abuser de ton temps, j'ai renommé mon tableau et mis le code à jour. maintenant je n'arrive plus à initialiser la listbox

Private Sub Retrofit_Click()
    ' pour valider le choix de la valeur par l'utilisateur, on va ailleurs
    Feuil1.Range("E7").Activate
End Sub

Private Sub Retrofit_Change()
    Sheets("Enquête").Range("O2").Value = Retrofit.Value
    If Feuil1.Range("O2") <> "" Then
    With [T_RETROFIT].ListObject
        Feuil1.Range("L6").Value = WorksheetFunction.Index(.ListColumns(2).Range, WorksheetFunction.Match(Retrofit.Value, .ListColumns(1).Range, 0), 1)
    End With
    Else
    Feuil1.Range("L6").ClearContents
End If
End Sub

Public Sub Retrofit_Initialize()
Sheets("Enquête").Retrofit.ListFillRange = "Retrofit!" & [T_RETROFIT].ListObject.ListColumns(1).DataBodyRange.Address
End Sub 

Merci pour ta patience

Eurêka. C'est "Liste!" et pas "Retrofit!"

Public Sub Retrofit_Initialize()
Sheets("Enquête").Retrofit.ListFillRange = "Liste!" & [T_RETROFIT].ListObject.ListColumns(1).DataBodyRange.Address
End Sub

Merci à 78chris et tous ceux qui se sont intéressé à ce post.

Re

Seul toi pouvais trouver vu qu'on ne voit pas le noms des feuilles du classeur absent...

L'important est que tu ai réussi

Rechercher des sujets similaires à "modifier valeur"