Affichage sous plusieurs conditions
Bonjour à tous,
Dans le fichier ci-joint, je souhaite que le choix des valeurs, dans les colonnes G et H de la feuille Expenses, se fasse selon les conditions ci-dessous:
1- Dans le tableau violet (colonne K à N) de la feuille DATA, si les colonnes M et N sont renseignées alors, dès lors que l'on renseigne la colonne D (Company name) de la feuille Expenses, les valeurs du tableau violet s'affichent automatiquement dans les colonnes G et H (de la feuille Expenses).
2- Si les colonnes M et N, du tableau violet de la feuille DATA, ne sont pas renseignées alors on laisse la possibilité à l'utilisateur de choisir les valeurs des colonnes G et H (de la feuille Expenses) avec les listes déroulantes existantes.
Ceci dans le but d'éviter de toujours renseigner manuellement les colonnes G et H (de la feuille Expenses) pour les mêmes dépenses dans le même magasin. Par exemple, chez Vodafone (opérateur téléphonique) cela sera toujours des dépenses de téléphone et rien d'autre.
Est ce que tout est clair?
En vous remerciant d'avance pour votre aide.
Bonjour
Je pense que ce n'est pas réalisable sans VBA.
Attendons voir..
Cordialement
Bonjour
Un essai
En marge j'aimerai trouver une réponse
Dans la macro que j'ai faite, j'ai été obligé d'inscrire une valeur dans la cellule G, sinon je ne pouvais pas rajouter une liste de validation dans la cellule H
Cette liste dépend de la cellule G, mais lorsque l'on le fait en manuel, et que la case G est vide, on a un message d'erreur style "La source est reconnue comme erronnée, voulez-vous continuer", on répond OUI et c'est bon
Par macro pas trouvé le moyen (testé On error, DisplayAlert) rien n'y fait
Si quelqu'un connait merci à lui
Je poste la macro
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
If Not Intersect(Columns("D"), Target) Is Nothing And Target.Count = 1 Then
If Target = "" Then Exit Sub
Set Cel = Sheets("DATA").Columns("K").Find(what:=Target, LookIn:=xlValues, lookat:=xlWhole) 'Recherche
If Not Cel Is Nothing Then ' Trouvé
With Target.Offset(0, 3) ' Donc en colonne G
.Validation.Delete ' Supprime la liste
If Cel.Offset(0, 2) <> "" Then ' Quelque-chose en colonne M en feuille DATA
.Value = Cel.Offset(0, 2) ' On note ce qui avait en colonne M de la feuille DATA
Else
.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=choix"
' Obligé de mettre un choix en colonne G sinon je ne peux pas placer la liste de validation en colonne H
.Value = [choix].Cells(1, 1)
End If
End With
With Target.Offset(0, 4) ' Donc en colonne H
.Validation.Delete ' Supprime la liste
If Cel.Offset(0, 3) <> "" Then ' Quelque-chose en colonne N en feuille DATA
.Value = Cel.Offset(0, 3) ' On note ce qui avait en colonne N de la feuille DATA
Else
.ClearContents ' On efface ce qui avait dans la colonne H
.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=Expense_level_2"
End If
End With
End If
End If
End SubBonjour,
Merveilleux d'en arriver jusque là. J'étais bien loin d'y arriver...
Lorsque l'on renseigne une cellule de la colonne D (Company name), automatiquement "Auto expenses" s'affiche dans la colonne G alors que dans le tableau violet (feuille DATA colonne M) cette valeur n'est pas indiqué. Est-il possible de modifier cela?
Encore merci pour ce travail. Je suis vraiment impressionné
Bonjour
Si ce nom s'affiche c'est que c'est le 1er nom de ta liste Choix
Cela veut dire que le nom tapé en colonne D n'a aucun choix dans la colonne M, et dans ce cas là je suis obligé d'y placer un nom car sinon la macro refuse de placer une liste de validation en colonne H
Mais c'est vrai que je pourrais l'effacer après la mise en place de la liste de validation en colonne H
Fait dans le fichier joint
Et voilà c'est parfais! un grand merci.