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 :

[Excel] Validation de données


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 89
    Points : 59
    Points
    59
    Par défaut [Excel] Validation de données
    Bonjour à tous,
    Je vais essayé d'etre clair, ms je ne garantie rien...
    j'ai un classeur avec 2 sortes de feuilles : une contenant un tableau et une autre contenant une liste.
    Dans cette liste, j'ai nommé la 1ere colonne "ListeEnfant" à l'aide de "Insertion-Nom-Définir". Puis après dans mon tableau, je fais une liste de choix dans une cellule à l'aide de "Données-Validation-Option-Autoriser Liste- et source, je met =ListeEnfant".
    Quand je reviens dans mon tableau et plus precisement ds la cellule, il n'y a pas de pb, je retrouve toute ma liste dans la liste de choix.
    Après, je fais une copie de ce tableau dans un autre classeur, qui contiendra lui aussi la feuille liste avec comme nom "ListeEnfant" pour la colonne A.
    Dans la copie du tab, à la cellule, je retrouve ma liste de choix, mais vide. La cellule, pourtant tjrs bien définit comme liste avec pour source =ListeEnfant, ne retrouve ou ne reconnait visiblement pas ma ListeEnfant définie. Il me met "La source est reconnue comme érronée, voulez vous continuer oui/non?".
    Est ce que par hasard quelqu'un aurait une idée de génie?
    Ca me dépasse et ne c comment faire...
    D'avance, merci beaucoup pour votre aide.

  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
    Points : 15 543
    Points
    15 543
    Par défaut
    Oui, Excel ne trouve pas la référence du classeur d'origine (cette liaison n'apparaît pas dans le nom de ta plage de cellule mais est nécessaire à Excel)
    Pour que ta liste soit renseignée, tu as une solution simple consistant à créer une copie de ton classeur d'origine.
    La seconde solution consiste à effacer le nom de la plage de cellules et de lui redonner le même nom. (passage par effacement obligé )

    Si ça peut t'aider...

    Tu dis

    A+


    NB - Pense à indiquer l'appli dans le sujet (je l'ai ajoutée)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 89
    Points : 59
    Points
    59
    Par défaut
    j'essaye de comprendre, mais je dois dire que je galère un peu...
    Pr definir un nom à une liste, si je ne me trompe pas, c'est comme ca :
    ActiveWorkbook.Names.Add Name:="", RefersToR1C1:="=Liste!C1"
    Mais j'aimerai comprendre ce que signifie la 2eme partie en gras.
    D'avance, merci encore!

  4. #4
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    RefersToR1C1 donne le type de référence utiliser pour définir ta plage. La deuxième partie est ta plage. je pense que Liste est le nom de ta feuille.
    Si ce qui suit peut t'aider à comprendre... je partirai en congés l'esprit léger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub NommerCellules()    'Nomme toutes les cellules de la plage A2:D4
    Dim NbreChamps 'Nombre de colonnes ayant une entête sur la 1ère ligne
    Dim NbreTypes 'Nbre de lignes ayant un libellé dans la 1ère colonne
    Dim NomCellule, AdresseCellule, NoColonne, NoLigne
        NbreChamps = 4 '3 champs + 1 : On ne nomme pas les cellules de la colonne A
        NbreTypes = 4 '
        For NoColonne = 2 To NbreChamps     'On démarre à la colonne 2
            For NoLigne = 2 To NbreTypes    'On démarre à la ligne 2
                NomCellule = Cells(NoLigne, 1).Value + Cells(1, NoColonne).Value
                AdresseCellule = "=Feuil1!R" + CStr(NoLigne) + "C" + CStr(NoColonne)
                ActiveWorkbook.Names.Add Name:=NomCellule, RefersToR1C1:=AdresseCellule
            Next NoLigne
        Next NoColonne
    End Sub
    A+

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 89
    Points : 59
    Points
    59
    Par défaut
    Tu peux partir en congès l'esprit lourd, pq ca m'eclaire pas plus que ca, ms t'inquiète, je vais y réflechir plus.
    Je retourne au boulot! Je suis loin d'etre en vacances je crois.
    Merci quand meme et bonnes vacances alors...

  6. #6
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    Salut,

    Moi, quand je fait ce style de copier coller, je parcours tous les noms du nouveau classeur, et je vire le nom de l'ancien dans la référence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub replaceName()
        Dim c As Name
        For Each c In ThisWorkbook.Names
            c.RefersTo = Replace(c.RefersTo, "[AncienClasseur]", "")
        Next c
    End Sub
    En fait, quand tu colles, le chemin de ta plage ListeEnfant, elle pointe vers ton ancien classeur, du coup j'enlève ce lien et il pointe alors sur le classeur en cours, et la liste marche.

    Note, je fais pareil pour les formule, car il peut y avoir le même problème parfois.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 89
    Points : 59
    Points
    59
    Par défaut
    je me suis débrouillé autrement, mais c gentil qd meme.
    Je vais qd meme essayé.
    Merci beaucoup à tous et bonne soirée.

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

Discussions similaires

  1. ACCESS Excel Validation de donnée/requete
    Par jbs106 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/01/2010, 09h19
  2. Réponses: 12
    Dernier message: 15/11/2007, 17h01
  3. Réponses: 2
    Dernier message: 06/04/2007, 21h37
  4. [EXCEL] Validation des données saisies - nouvelle Question :-)
    Par Paloma dans le forum Macros et VBA Excel
    Réponses: 39
    Dernier message: 29/11/2006, 13h28
  5. Validation de données Excel sur plusieurs cellules
    Par Civodul4 dans le forum Excel
    Réponses: 3
    Dernier message: 06/03/2006, 11h56

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