Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

remplir cellle en fonction choix d'une autre cellule

  • Initiateur de la discussion Initiateur de la discussion matt31
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

matt31

XLDnaute Occasionnel
Bonjour,

voici mon problème qui se décompose en 2 partie.

J'ai un fichier sur lequel je voudrais que soit affichée dès l'ouverture et par défaut un choix d'une liste déroulante.
Sur le fichier joint, je voudrais que la colonne H, soit remplie à partir de la ligne 3 par "NC" sachant que chaque cellule de cette colonne a un choix sur liste déroulante entre "C" et "NC".
Comment faire?

Ensuite, je voudrais que si les cellules de la colonne G, à partir de la ligne 3 étaient remplies par les valeurs de liste déroulante de cette colonne, la cellule correspondante dans la colonne H (donc "NC") devienne vide.
Comment faire tout en gardant en fait la possibilité de la retransformer en "C" et donc en gardant la liste déroulante.

Merci pour votre aide
 

Pièces jointes

Re : remplir cellle en fonction choix d'une autre cellule

Bonjour matt31,

à priori, comme ceci, si j'ai tout compris :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Not Intersect(Target, Range("G:G")) Is Nothing Then
    On Error Resume Next
    Set c = Target.Offset(0, 1)
    With c.Validation
        .Delete
        If Target = "" Then
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="C,NC"
        Else
            c = ""
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=",C,NC"
        End If
        .IgnoreBlank = True
        .InCellDropdown = True
    End With
End If
End Sub

cf. fichier en retour
 

Pièces jointes

Re : remplir cellle en fonction choix d'une autre cellule

Mais bon en y réfléchissant, en remplaçant la macro précédente par ceci, ça devrait faire la même chose au final 😛

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G:G")) Is Nothing Then If Target <> "" Then Target(1, 2) = ""
End Sub
 
Re : remplir cellle en fonction choix d'une autre cellule

merci, c'est ce que je voulais. Il va vraiment falloir que j'apprenne le vba...

Par contre, est-il possible d'empêcher d'effacer "NC" en colonne H si la cellule correspondant en colonne G est vide et si la cellule en G est vide alors remettre "NC" en H ?

Toujours pour compliquer peut-on ajouter une nouvelle condition à la première, à savoir remettre en "NC" la cellule en H si la cellule de la même ligne en J en différente de vide, même si H est remplie?

Encore merci
 
Dernière édition:
Re : remplir cellle en fonction choix d'une autre cellule

Re,

je suis pas sur de tout avoir compris, mais je dirais comme ceci :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("J:J")) Is Nothing Then
    If Target <> "" Then Target(1, -1) = "NC"
ElseIf Not Intersect(Target, Range("G:G")) Is Nothing Then
    If Target <> "" Then Target(1, 2) = "" Else Target(1, 2) = "NC"
End If
End Sub
 

Pièces jointes

Re : remplir cellle en fonction choix d'une autre cellule

je vais essayer d'être plus clair.

Je voudrais que la colonne H soit remplie avec le code "NC" si la cellule correspondante dans la colonne G est vide et qu'il soit impossible d'effacer ce "NC".

Dès que la colonne G est remplie, je voudrais que le "NC" de la colonne H soit effacé automatiquement et remplacé suivant les 2 cas.

Si en G les codes suivants sont choisis : "C" ou "NVE" ou "VaR" alors la cellule correspondant en H est remplie avec "C".
Si en G le code suivant est choisi : "NC" alors se reporter en colonne J. Si J est vide alors mettre "C" en H, si J est renseignée alors mettre "NC" en H.

J'espère avoir été plus clair et je remets le fichier modèle.
 

Pièces jointes

Re : remplir cellle en fonction choix d'une autre cellule

merci mais il y a un problème.
Je ne veux pas que dans les choix possible de la colonne G, le "C" et le "NC" apparaissent et soient possibles. Ils correspondent uniquement à la colonne H.
D'autre part, il est possible d'effacer les contenus de la colonne H alors que je voudrais que ce soit protégé.

Dernier point, si "NV" est choisi en G, je voudrais un renvoi sur J pour savoir si H est rebasculer en "NC" ou en "C".

je mets un modèle avec les choix qui sont possibles
 

Pièces jointes

Re : remplir cellle en fonction choix d'une autre cellule

par rapport à ce que tu as envoyé précédemment, cela ne fonctionne pas pour tout.
Sur mon fichier modèle, je n'ai rien modifié ne sachant pas le faire et n'y arrivant pas avec mes connaissances.

J'ai modifié simplement pour montrer les différents cas de figures et ce que je souhaiterais avoir dans la colonne H en fonction de G ou J
 
Re : remplir cellle en fonction choix d'une autre cellule

Bonjour,

Comme suggéré plus haut, tu peux tester le code suivant, qui semble correspondre à tes règles:

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("G:G")) Is Nothing Then Exit Sub
Select Case Target
    Case ""
        Target.Offset(0, 1) = "NC"
    Case "C", "NVE", "VaR"
        Target.Offset(0, 1) = "C"
    Case "NC"
        If IsEmpty(Target.Offset(0, 3)) Then
            Target.Offset(0, 1) = "C"
        Else
            Target.Offset(0, 1) = "NC"
        End If
End Select
End Sub

A +
🙂
 
Re : remplir cellle en fonction choix d'une autre cellule

merci mais en fait j'ai détourné le problème.

Avec une macro il fallait la lancer à chaque ouverture du fichier et ce n'était pas possible car ce fichier est destiné à être utilisé quotidiennement par des personnes n'ayant pas trop l'habitude de travailler sur Excel.

J'ai donc utilisé une formulle conditionnelle et verrouillant la cellule et en la protégeant. Ainsi elle ne peut pas être modifiée autrement que par la formule.

Voici ce que j'ai mis en colonne H :
=SI($G3="NV";SI($J3="";"C";"NC");SI(OU($G3="V";$G3="NVE";$G3="VaR");"C";"NC"))

Encore merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
261
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…