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 :

saisie dans une liste


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut saisie dans une liste
    bonjout tous le monde
    probleme pas très difficile sauf quand on le cherche
    j'ai dans une feuille nommée denrees une liste de plat de b5 a b18.
    j'ai une liste de validation en feuille parametre da A2 a la fin de la liste. cette liste est nommée et grace a la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(Paramètres!$A$2;;;NBVAL(Paramètres!$A:$A)-1)
    se tient a jour. jusque là c'est très bien.
    je veus obtenir que la personne qui met a jour cette liste puisse y faire de nouvelles entrées. donc si elle tape couscous, il existe dans la liste de validation, pas de probleme, mais si elle tape paella qui n'existe pas, un bout de code lui propose d'ajoute l'entrée a la liste. j'ai essayé
    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
     
    Public p
    Private Sub Worksheet_Change(ByVal Target As Range)
    With Sheets("Paramètres")
        derli = .Range("a65536").End(xlUp).Row
        If Target.Column = 2 Then
             For Each cel In .Range("a1:a" & derli)
                 If cel = p Then Exit Sub
             Next
             MsgBox "n'existe pas"
        End If
    End With
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 2 Then p = Target.Value
    End Sub
    cela fonctionne un peu, mais ne conviens pas car pas très sur. il suffit ne selectionner plusieur cellules ou de ceci ou de cela pour que ça ne marche pas. je crois avoir déja vu ce probleme sur le forum, mais je ne le retrouve pas. je croyais le pb simple, il se revele un peu hardu pour cette fin de soirée. quelqueun aurait une idée a me proposer ? merci d'avance

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je ne comprends pas ce que tu veux faire avec ce code ? (puisqu'il ne modifie pas la saisie)
    - Si p existe déjà que souhaites-tu ? la donnée doit-elle être conservée ou supprimée ?
    - Si p n'existe pas, et à part le message, que souhaites-tu ?
    A+

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    j'ai trouvé ce que je cherchais, grace a un fichier que j'avais pris sur le forum il y a longtemps déja. merci a son auteur; je sais plus qui c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$2" Then
    If IsError(Application.Match(Target.Value,[Liste], 0)) Then
        If MsgBox("On ajoute?", vbYesNo) = vbYes Then
    Liste].End(xlDown).Offset(1, 0) = Target.Value
     Sheets("Liste").[Liste].Sort key1:=Sheets("Liste").Range("A2")
       Else
    Application.Undo
     End If
     End If
     End If
    End Sub
    le but étant
    dans la feuil 1j'ai une plage de case a remplir avec les élément d'une liste qui sont en feuille 2 par l'intemediaire d'une liste de validation,je veux que si l'utilisateur entre un nom qui ne fait pas partie de la liste, ce nouvel élément soit pris en compte et figure désormais dans la liste ce bout de code le fait a merveille, j'ai juste remplacé la case b2 avec un intersect pour tenir compte de la plage.
    merci d'avoir répondu en tout cas. bon week end

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

Discussions similaires

  1. [XL-2010] Ajout d'un champ pour nouvelle saisie dans une liste déroulante
    Par jerem56 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/03/2014, 10h29
  2. [AC-2007] Interdire la saisie dans une liste déroulante
    Par KIK83 dans le forum IHM
    Réponses: 4
    Dernier message: 18/11/2009, 02h08
  3. Probleme de saisies dans une liste
    Par Veronique45 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/06/2009, 20h44
  4. Comment permettre la saisie dans une liste de sélection
    Par idamarco dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/02/2009, 00h51
  5. Comment autoriser la saisie dans une liste déroulante
    Par Kyti dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 27/10/2008, 16h44

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