IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Autocompletion dans une cellule en fonction d'une liste déroulante avec message d'avertissement [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien agent de maitrise
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Technicien agent de maitrise
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Autocompletion dans une cellule en fonction d'une liste déroulante avec message d'avertissement
    Bonjour,

    J'utilise un fichier EXCEL pour l'engagement de mon personnel tout les jours en copiant la dernière feuille et j'aimerais pouvoir avoir l'auto complétion en plus de ma liste déroulante mais surtout pouvoir conserver mon message d'avertissement : exemple, avec une liste déroulante comprenant lundi, mardi, mercredi, jeudi, vendredi, samedi et dimanche, taper sur le clavier uniquement "L" dans une cellule (ou combobox???), puis "LUNDI" s'afficherait automatiquement. Il ne me resterait plus qu'à valider. D'après mes recherches, il en ressort que ca doit être possible mais en avec VBA, chose que je ne maitrise pas. J'ai même trouvé une vidéo sur le net, malheureusement en anglais et sur une version EXCEL que je ne connais pas du tout, mais qui reflète exactement ce que j'aimerais faire, hormis le message d'avertissement. Etant nouveau sur le forum et novice, je ne sais pas si je peux vous mettre le lien...Je suis donc à la recherche d'une personne qui pourra me guider pas à pas. J'ai le fichier en guise d'exemple si besoin.
    Merci d'avance aux personnes qui me consacreront de leurs temps.

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    Tu vas avoir un problème avec mercredi.

    Pour moi le plus simple c'est de faire un worksheetchange.

    Tu dis quand la valeur de ma cellule change si la valeur est L alors la nouvelle valeur de ma cellule est Lundi est tu fais ça jusque dimanche.

    Tu peux faire la même chose avec 1 à 7.

    http://silkyroad.developpez.com/VBA/EvenementsFeuille/

  3. #3
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    teste ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        'ici, la cellule cible est C5, adapter...
        If Target.Address(0, 0) <> "B5" Then Exit Sub
     
        Application.EnableEvents = False
     
        'seuls mardi et mercredi demande deux lettres
        If Target.Value Like "l*" Then Target.Value = "lundi"
        If Target.Value Like "ma*" Then Target.Value = "mardi"
        If Target.Value Like "me*" Then Target.Value = "mercredi"
        If Target.Value Like "j*" Then Target.Value = "jeudi"
        If Target.Value Like "v*" Then Target.Value = "vendredi"
        If Target.Value Like "s*" Then Target.Value = "samedi"
        If Target.Value Like "d*" Then Target.Value = "dimanche"
     
        Application.EnableEvents = True
     
    End Sub
    Il faut bien évidemment que tu valide ta première ou deux premières lettres en sortant de la cellule (entrée ou tab ou autre) pour que l'évènement se déclenche et que le jour correspondant s'inscrive !

    Hervé.

  4. #4
    Candidat au Club
    Homme Profil pro
    Technicien agent de maitrise
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Technicien agent de maitrise
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Merci à vous deux pour ces éclaircissement mais je ne suis pas sûr que cela fonctionne pour mon fichier. Les jour de la semaine sont pour l'exemple, sur mon fichier, cela doit fonctionner avec des noms de famille, et sur plusieurs cellules (c'est un tableau d'engagement du personnel).
    Ci joint ce fichier qui reflètera bien mieux mes explications, ainsi que la vidéo vu sur le net dont je parle dans mon premier message.



    D'après vous, est ce possible sur excel 2010 (comme évoqué dans mon premier message, je ne connais pas la version utilisé)
    Pour rappel, je suis novice dans excel par rapport à vous, mes compétences s'arrêtent aux macros et aux formules de calcul comme vous pourrez le voir sur mon fichier. Donc désolé si je vous pose des questions qui pour vous couleront de source...
    Merci d'avance
    Cordialement
    Fichiers attachés Fichiers attachés

  5. #5
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    Bonjour,

    Tu lui reproches quoi à ton fichier ?
    L'autocomplétion fonctionne.
    Ne démarre pas ta saisie par ' c'est tout. Si tu tapes ba il te propose BARDE

    eric

  6. #6
    Candidat au Club
    Homme Profil pro
    Technicien agent de maitrise
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Technicien agent de maitrise
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Bonjour Éric,
    Je ne lui reproche rien, je cherche juste a l améliorer afin que le nom s'inscrive directement dans la cellule (ou combo box)lorsque je tape au clavier B et A pour BARDE, uniquement G pour GABIN, etc... Comme vu à 2,05min sur la vidéo de mon précédent message. est ce possible sur excel 2010 et comment réaliser la procédure? Merci

    Rebonjour,
    En relisant les messages, la solution d Hervé me semble bonne mais le problème est que la liste n est pas des jours de la semaine mais des noms car c est un effectif. Ces noms changent constamment( au minimum un fois par mois un départ ou une arrivée intérim). La solution d Hervé ne pourrait elle pas s adapter en fonction de la liste de mon personnel en automatique plutôt que j ailles dans le code pour changer manuellement les données???
    Merci d avance pour vos réponses
    Cordialement

  7. #7
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    Je ne lui reproche rien, je cherche juste a l améliorer afin que le nom s'inscrive directement dans la cellule (ou combo box)lorsque je tape au clavier B et A pour BARDE, uniquement G pour GABIN, etc...
    Je ne comprend toujours pas. Il fonctionne exactement comme ça, que ce soit sur 2003 ou 2010.
    C'est taper sur enter pour valider qui te gène ?
    eric

  8. #8
    Candidat au Club
    Homme Profil pro
    Technicien agent de maitrise
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Technicien agent de maitrise
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Je suis d'accord avec toi, cela marche avec BARDE si tu l'inscris dans la colonne K puisqu'elle apparait déjà en K11. Mais si tu l'effaces de cette cellule ou si tu essayes dans les colonne M ou O, cela ne fonctionne pas.
    Cordialement

  9. #9
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Dans ton premier post tu disais :
    avec une liste déroulante comprenant lundi, mardi, mercredi, jeudi, vendredi, samedi et dimanche, taper sur le clavier uniquement "L" dans une cellule (ou combobox???), puis "LUNDI" s'afficherait automatiquement.
    donc, je suis parti sur les jours de la semaine !
    Maintenant, si tu veux avoir une liste qui est changeante et avoir un remplissage semi automatique teste ceci avec les noms en colonne A de A1 à Ax. Attention tout de même de vérifier la valeur qui est entrée car c'est la première trouvée en partant du haut qui sera inscrite donc, si deux noms commencent par les mêmes lettres il te faudra saisir jusqu'à la lettre qui les différencie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        Dim Plage As Range
        Dim Cel As Range
     
        'ici, la cellule cible est C5, adapter...
        If Target.Address(0, 0) <> "C5" Then Exit Sub
     
        'la plage des noms se trouve en colonne A de la feuille active, à adapter...
        With ActiveSheet
     
            Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
     
        End With
     
        Application.EnableEvents = False
     
        Set Cel = Plage.Find(Target, , xlValues, xlPart)
     
        If Not Cel Is Nothing Then Target.Value = Cel.Value
     
        Application.EnableEvents = True
     
    End Sub
    Hervé.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Salut,

    Sinon, dans la FAQ:
    FAQ ( Taper AutoCompletion dans le champs Recherche) => Comment implémenter une auto-complétion sur un contrôle TextBox ?

    Sur le Forum Contribuez : [Textbox] Autocomplétion

    A voir si tu peux l'adapter sur un contrôle ActiveX de liste déroulante sur feuille de calcul. Je pense que ton exemple de Youtube ramène au même type d'autocomplétion que dans la FAQ.


    A+

  11. #11
    Candidat au Club
    Homme Profil pro
    Technicien agent de maitrise
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Technicien agent de maitrise
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Merci à vous deux pour ces codes mais étant novice, pouvez vous m indiquer la procédure pas a pas afin de coller ce code a l emplacement ou il doit y être.J ai essayé en tapant alt f11 mais étant novice, je suis arrive tel un extraterrestre sur une terre inconnue... Merci pour votre aide
    Cordialement

  12. #12
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Donc, Alt + F11 là, tu es dans le VBE. A gauche et en haut tu as une fenêtre avec les noms des feuilles de ton classeur, cherche la feuille cible son nom Excel est entre parenthèses (l'autre étant le nom du module de la feuille), double clique dessus, à ce moment sur la droite une zone de texte s'affiche, là tu colle le code que je t'es posté puis tu retourne dans Excel et tu teste. Attention, pour le test j'ai pris une cellule cible au hasard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Target.Address(0, 0) <> "C5" Then Exit Sub
    Cette cellule est la C5 si ce n'est pas la bonne pour toi, change l'adresse entre les guillemets.

    Hervé.

  13. #13
    Candidat au Club
    Homme Profil pro
    Technicien agent de maitrise
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Technicien agent de maitrise
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Bonjour

    Je pense avoir suivi ta procédure, j'ai changé le cellule C5 par N3 pour l'essai, remis la liste en colonne A...Je pense que je vais commencer à devenir fou : ca ne fonctionne pas... Enfin si, seulement si le nom est déjà dans la colonne N comme par exemple HUMBER, LE ou RAMONDY... Peux tu jeter un coup d'œil au fichier ci joint STP? Si ça arrive à fonctionner, comment faire pour que ça s'applique à plusieurs cellules?? (comme pour une formule de calcul, exemple N3:N5;N7:N9;N11:N13 etc....)?
    Merci infiniment
    Fichiers attachés Fichiers attachés

  14. #14
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Voici le code pour plusieurs cellules en colonne N :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        Dim Plage As Range
        Dim Cel As Range
     
        If Intersect(Target, Range("N3,N5,N7,N9,N11,N13")) Is Nothing Then Exit Sub
     
        'la plage des noms se trouve en colonne A de la feuille active, à adapter...
        With ActiveSheet
     
            Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
     
        End With
     
        Application.EnableEvents = False
     
        Set Cel = Plage.Find(Target, , xlValues, xlPart)
     
        If Not Cel Is Nothing Then Target.Value = Cel.Value
     
        Application.EnableEvents = True
     
    End Sub
    Comme la comparaison est binaire, n3 et N3 sont différents donc comme les adresses de cellules sont retournées en majuscules il te faut indiquer les adresses en majuscules.
    Pour que le système fonctionne, il ne faut pas qu'il y ai de liste de validation dans les cellules cibles car elles sont prioritaires sur la procédure évènementielle "Worksheet_Change".

    Hervé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/01/2014, 08h19
  2. [XL-2003] Calcul dans une cellule en fonction d'une date
    Par olivier777 dans le forum Excel
    Réponses: 6
    Dernier message: 11/09/2012, 15h55
  3. Réponses: 2
    Dernier message: 05/03/2010, 14h15
  4. Nom d'une cellule en fonction d'une variable
    Par Kibald dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/12/2008, 21h47
  5. [MySQL] Changement de couleur d'une cellule en fonction d'une requete
    Par freko dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 10/07/2008, 16h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo