Base de recommandation

  • Initiateur de la discussion Initiateur de la discussion Eyser
  • 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 !

Eyser

XLDnaute Nouveau
Bonjour à tous,

Avant de poster ce petit message, j'ai parcourus le forum dans l'espoir de trouver réponse à mes questions. J'ai trouver réponse, mais malheureusement étant donner que je suis un " Grand débutant " dans le domaine excel, je n'ai pas compris du tout.

C'est se pourquoi je viens vous demander de l'aide afin de finaliser mon classeur de recommandation pour mon travail.

Je vous joint mon document et vous explique le tout Feuil par Feuil de mon classeur 😱

Feuil1 :

Mes données " Nom, Prénom, Signer, ... "
Vous pourrez remarquer que pour " Signer, Type de contrat et Réponse téléphonique ", j'ai fait une liste de choix ( cette liste se trouve en Feuil2 )

J'aimerais donc en fait que pour la colonne " Signer " quand c'est " Oui " la réponse soit verte et quand c'est " Non " la réponse soit rouge.

Ensuite toujours dans notre Feuil1, j'aimerais que quand je tape le code postal dans la colonne appropriée, que la ville s'affiche dans la colonne appropriée, MAIS que si par exemple je tape 6030 ( Il y a deux villes ) et bien que j'ai un choix en liste déroulante qui s'affiche pour choisir la ville correcte. ( A savoir que le tableau de toute les villes se trouve en Feuil2 )

Pour terminer, la colonne " Date de naissance " j'aimerais la tapé de cette façon
15041985 et qu'elle s'affiche 15/04/1985.

En vous remerciant d'avance, j'attends avec impatience vos réponses.


Eyser 🙂
 

Pièces jointes

Re : Base de recommandation

Bonjour Eyser et bienvenue parmi nous,

J'aimerais donc en fait que pour la colonne " Signer " quand c'est " Oui " la réponse soit verte et quand c'est " Non " la réponse soit rouge.
... Il faudrait que tu précises si la couleur doit s'appliquer à la police de caractères ou au remplissage. Cette même couleur doit-elle s'appliquer uniquement à la colonne C ou à la ligne entière, chaque fois que "oui" ou "non" apparaît en colonne C??
Dans tous les cas de figure, commence par aller voir la Mise en Forme Conditionnelle (dans l'onglet Accueil)

Pour la seconde partie de ta question, il faudra encore jouer avec des listes déroulantes, mais en utilisant des formules et des cellules nommées. Dans ton fichier, en pièce jointe
- une cellule nommée premCode (fait référence à Feuil2!A1)
- une plage de cellules nommée listeCP (fait référence à Feuil2!$A$1:$A$2901)
- une validation de données en Feuil1!J2: autoriser Liste
Source: =DECALER(premCode;EQUIV($I2;listeCP;0)-1;1;NB.SI(listeCP;$I2))

Je propose que tu t'attaques déjà à ces deux aspects ... on verra pour tes dates dans un second temps 😉
 

Pièces jointes

Re : Base de recommandation

Bonjour Eyser et bienvenu, Bonjour Modeste, bonjour le forum,

Comme j'ai planché sur ton problème je t'envoie aussi cette solution VBA. Je n'ai pas résolu le problème de la date de naissance...
En pièce jointe ton fichier modifié avec la macro événementielle Change ci dessous :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim o As Worksheet 'déclare la variable o (Onglet)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim pl As Range 'déclare la variable pl (PLage)
Dim no As Byte 'déclare la variable no (Nombre d'Occurrences)
Dim r As Range 'déclare la variable r (Recherche)
Dim pa As String 'déclare la variable pa (Première Adresse)
Dim tbo() As String 'déclare la variable tbo (TaBleau des Occurrences)
Dim x As Byte 'déclare la variable x (incrément)
Dim v As String 'déclare la variable v (Validation)
 
If Target.Column <> 9 Then Exit Sub 'si le changement a lieu ailleurs qu'en colonne 9 (I), sort de la procédure
'si la cellule est effacée, supprime la liste de validation, efface le contenu de la cellule de la colonne J
If Target.Value = "" Then Target.Offset(0, 1).Validation.Delete: Target.Offset(0, 1).ClearContents: Exit Sub
 
Set o = Sheets("Feuil2") 'définit la variable o
Set pl = o.Range("A1:A" & o.Cells(Application.Rows.Count, 1).End(xlUp).Row) 'définit la plage pl
no = Application.WorksheetFunction.CountIf(pl, Target.Value) 'définit la variable no
If no > 1 Then 'condition 1 : si il existe plus d'une occurence (plusieurs villes ayant le même code)
    Set r = pl.Find(Target.Value, , xlValues, xlWhole) 'définit la variable
    If Not r Is Nothing Then 'condition 2 : si il existe au moins une occurrence trouvée
        pa = r.Address 'définit la première adresse trouvée
        Do 'exécute
            ReDim Preserve tbo(x) 'redimentionne le tableau des occurrences tbo
            tbo(x) = r.Offset(0, 1).Value 'attribue une variable indéxée au tableau tbo
            v = IIf(v = "", tbo(0), v & "," & tbo(x)) 'définit la variable v
            x = x + 1 'incrémente x
            Set r = pl.FindNext(r) 'redéfinit r (recherche suivante)
        Loop While Not r Is Nothing And r.Address <> pa 'boucle tant qu'il existe des occurrences ailleurs qu'en pa
    End If 'fin de la condition 2
    With Target.Offset(0, 1).Validation 'prend en compte la validation de la cellule de la colonne J
        .Delete 'supprime
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=v 'ajoute une liste de validation
    End With 'fin de la prise en compte de ...
Else 'sinon (condition 1)
    On Error Resume Next 'gestion des erreurs (si une erreur est générée, passe à la ligne suivante)
    'place en colonne J la ville correspondante (si aucune ville ne correspond au code une erreur est générée)
    Target.Offset(0, 1).Value = pl.Find(Target.Value, , xlValues, xlWhole).Offset(0, 1).Value
    If Err <> 0 Then 'Condition 3 : si une erreur a été générée
        Err = 0 'supprime l'erreur
        MsgBox "Numéro de code invalide !" 'message
        Target.ClearContents 'efface le contenu de la celluel
        Target.Select 'sélectionne la cellule
        Exit Sub 'sort de la prcédure
    End If 'fin de la condition 3
End If 'fin de la condition 1
Target.Offset(0, 1).Select 'sélectionne la cellule de la colonne J
End Sub
Le fichier :
 

Pièces jointes

Re : Base de recommandation

Bonsoir Modeste, Bonsoir Robert.

Dans un premier temps, je tiens à vous remercier pour vos réponses rapide et claire.

@ Modeste :

Un grand merci pour tes informations, j'ai pu regarder un peu le fonctionnement en m'y penchant dessus et j'ai compris, je ferais d'autres test pour m'entraîner avec cette fonction.

Un grand merci aussi pour m'avoir parlé de la mise en forme conditionnelle, car grâce à ce petit point j'ai pu modifier quelques petite choses dans le fichier que " Robert " m'a renvoyer.

Pour répondre à ta question c'était la police de caractère qui devait prendre la couleur verte en cas de " Oui " et la couleur rouge en cas de " Non ".


@ Robert :

Grand merci à toi, je me penche sur le code Vb que tu m'as donner, même si je n'y comprend pas grand chose, il faut essayer pour se permettre de dire " je ne comprend rien " 🙂

En tout cas un grand merci à toi, je vais également me pencher sur les dates de naissance et numéro de téléphone pour qu'il s'affiche comme je le souhaite.


Un très grand merci à vous, le forum fait maintenant partie de mes favoris et sans doute que l'ont se reverra bien plus d'une fois et j'aurais peut-être un peu plus de connaissance.

Bisous et encore merci à vous deux.


Eyser😱
 
- 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
8
Affichages
579
Réponses
16
Affichages
670
Retour