begin process at 2012 02 13 08:27:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

Liste variable


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Liste variable

vendredi 7 novembre 2008 à 18:54:48 | Liste variable

Gansc

Bonjour,
Je souhaiterai créer une cellule dans laquelle on a accès a une liste déroulante de choix prédéfinis mais variable.
Je m'explique Mon classeur comporte deux feuilles.
Dans la première, Colonne A: j'ai une une liste de pays (par exemple) A1="France"; A2="Allemagne".
Il est à noter que cette liste évoluera dans le temps à la prochaine utilisation du fichier cela pourrait-être par exemple A1="France"; A2="Allemagne"; A3="Espagne".

Dans la deuxième feuille, je souhaite faire apparaitre cette liste variable sous forme de liste déroulante. Comme losrqu'on utilise la fonction validation.

J'ai essayé de donner un nom à la colonne A, puis de l'utiliser dans la fonction validation. J'obtient bien une liste déroulante variable avec toutes les données mais je ne suis pas restreint en écriture. En effet, je peux écrire par exemple Australie même si ce mot n'était pas dans la liste.

Avez-vous une idée?

J'ai essayé aussi avec visual basic mais je n'arrive pas nommer la liste qui varie (cf. mon code)
Sélection de la liste variable
Dim a As Integer
For i = 1 To 10000
If Cells(i, 1) = "" Then
a = i
End If
Next
For k = 1 To a
Union(Selection, Cells(k, 1)).Select
Tentative pour nommer la serie
Next
ActiveWorkbook.Names.Add Name:="Pays", RefersToR1C1:="=Feuille1!R1C1:R4C1"

Le code en rouge doit être entré sous cette forme je ne peux donc pas faire varier la taille de la liste.

Avez-vous une idée? Excel ou VBA?

Merci d'avance
vendredi 7 novembre 2008 à 23:31:57 | Re : Liste variable

MPi

Réponse acceptée !
Tu pourrais essayer ainsi

    Dim nbLignes As Long
   
    'Pour savoir combien il y a de lignes dans la liste en colonne A
    nbLignes = Sheets("Feuil1").Cells(Rows.Count, "A").End(xlUp).Row
   
    'Utilisation de RefersTo plutôt que RefersToR1C1
    ActiveWorkbook.Names.Add Name:="Pays", RefersTo:="=Feuil1!A1:A" & nbLignes
   
    'Ajout d'une liste déroulante à la cellule A1
    With Sheets("Feuil2").Range("A1").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
            Operator:=xlBetween, Formula1:="=Pays"
        .IgnoreBlank = True
        .InCellDropdown = True
        .ShowInput = True
        .ShowError = True
    End With

Et plutôt que d'ajouter la liste de validation seulement qu'à A1, tu pourrais le faire pour un Range quelconque en modifiant l'adresse.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI

samedi 8 novembre 2008 à 00:32:19 | Re : Liste variable

Gansc

Bonsoir MPi,

Je te remercie pour ta réponse. Effectivement, ton code marche très bien.
Cependant, je souhaiterai affecter la liste déroulante à toute la colonne A de la feuille2 (sauf la cellule A1: zone de titre).

J'ai pensé à 3 manières mais elles ne marchent pas.

1erfaçon: Je nomme juste la liste à l'aide de ton code (ci-dessous); puis dans la feuille2 sur toutes les cellules de la colonne A (sauf A1), j'utilise la fonction validation où je renseigne les champs Autoriser :Liste et Source:=Pays.
J'ai bien des listes déroulantes mais pas la totalité de la liste.

Dim nbLignes As Long
   
    'Pour savoir combien il y a de lignes dans la liste en colonne A
    nbLignes = Sheets("Feuil1").Cells(Rows.Count, "A").End(xlUp).Row
   
    'Utilisation de RefersTo plutôt que RefersToR1C1
    ActiveWorkbook.Names.Add Name:="Pays", RefersTo:="=Feuil1!A1:A" & nbLignes

2èmefaçon: J 'ai créer une boucle dans ton code pour affecter la même opération à toutes les cellules, mais en plus du temps très important pour effectuer la macro j'ai le même problème de liste déroulante incomplète que dans la façon 1.

Dim nbLignes As Long
    'Pour savoir combien il y a de lignes dans la liste en colonne A
    nbLignes = Sheets("Feuil1").Cells(Rows.Count, "A").End(xlUp).Row
    'Utilisation de RefersTo plutôt que RefersToR1C1
    ActiveWorkbook.Names.Add Name:="Pays", RefersTo:="=Feuil1!A1:A" & nbLignes
    For i=2 to 65336
        With Sheets("Feuil2").Cells(i,1).Validation

        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
            Operator:=xlBetween, Formula1:="=Pays"
        .IgnoreBlank = True
        .InCellDropdown = True
        .ShowInput = True
        .ShowError = True
    End With
Next

3èmefaçon:  J'ai utilisé ton code avec Range("A:A") à la place de range ("A1"); mais j'ai toujours le même problème.


Vois-tu une explication? As-tu une solution?

Quoiqu'il en soit je teremercie déjà de t'être penché sur mon problème. j'ai bien avnacé grace à toi.

samedi 8 novembre 2008 à 00:37:22 | Re : Liste variable

MPi

Et si tu changes ceci ?

With Sheets("Feuil2").Range("A1").Validation
pour
With Sheets("Feuil2").Range("A2:A65536").Validation

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI

samedi 8 novembre 2008 à 01:09:19 | Re : Liste variable

Gansc

Non ça ne marche toujours pas. En fait, le code affiche bien la liste déroulante mais à chaque ligne je perde un choix dans la listec'est-à-dire;

Si en feuille1 j'ai :A1:allemagne A2:Australie A3:Italie A4: Portugal
Avec tous les codes essayé j'ai en liste déroulante dans la cellule:
A2:"Australie;Italie; Portugal"
A3:"Italie; Portugal"
A4:"Portugal"
A5: plus rien etc...

Je ne comprends pas pourquoi

samedi 8 novembre 2008 à 01:22:12 | Re : Liste variable

MPi

Réponse acceptée !
C'est probablement dû aux adresses...
Essaie ceci

ActiveWorkbook.Names.Add Name:="Pays", RefersTo:="=Feuil1!A$1:A$" & nbLignes

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI

samedi 8 novembre 2008 à 01:54:22 | Re : Liste variable

Gansc

Je te remercie beaucoup. Ca marche.
Bonne nuit.
samedi 8 novembre 2008 à 01:57:49 | Re : Liste variable

MPi

Bonne soirée ou bonne nuit, selon...
Et bonne continuation !

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI

samedi 8 novembre 2008 à 15:55:39 | Re : Liste variable

Gansc

Bonjour,
Maintenant je souhaiterai effectuer des listes déroulantes imbriquées.
J'ai cherché dans le site, mais je n'est pas réussi à trouver.
En feuille1 j'ai:

ColonneA
allemangne
ColonneB
rouge
Italie rouge
allemangne bleu
France vert
France bleu
italie rose
allemangne vert


En feuille2:
Cellule A1: Choix du pays
Cellule B1: Choix de la couleur
Je souhaiterai que le choix de la couleur dépende du pays.
Donc si A1=Italie on a en B1 le choix entre rouge et rose.

Avez-vous une solution? 
Merci d'avance.  

samedi 8 novembre 2008 à 16:09:11 | Re : Liste variable

MPi

Tu devras boucler la liste des valeurs pour "emmagasiner" les couleurs correspondantes dans une chaîne. Chaque couleur devra être séparée par une virgule et, plutôt que de mettre un nom de plage, tu mets cette chaîne préalablement créée.

strCouleur = "rouge,rose"
..........
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
            Operator:=xlBetween, Formula1:=strCouleur
..........

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI


1 2

Cette discussion est classée dans : variable, liste, colonne, exemple, déroulante


Répondre à ce message

Sujets en rapport avec ce message

URGENT : Liste déroulante dans un contrôle liste [ par Fipo ] Salut tout le monde,J'ai une bonne question à vous soumettre. Est-il possible de créer une liste (contrôle ListView par exemple ou autre) à 2 colonnes liste déroulante déroulante ... [ par tom_logan ] salut à tous,suis à la fois nouveau sur le forum et debutant en VB...je cherche depuis plusieurs jours comment faire ce qui suit et je ne trouve pas ! récupérer dans une variable le choix qui est fait dans une liste déroulante [ par selig92 ] Dans un module, je fais ouvrir un formulaire "liste déroulante". Avec la souris je fais donc mon choix parmis les 8 noms contenus dans cette zone de l Excel : Comment attacher une Liste déroulante à une cellule Excel ? [ par total_pipeau ] Bonjour camarades programmeurs,Je suis en train de me faire une petite application en VB6.0 sous Excel me permettant de faire la gestion de compte per un peu d'aide pour une macro svp! c'est urgent!!! [ par matthieu7815 ] Dans une colonne A j'ai 4 noms différents qui sont réutilisés sur toutes les lignes.Je souhaiterai à partir de ces noms colorier des cases en ligne. P VB Access contenu zone de liste dans une variable VB [ par daffadinx_ ] Bonjour à tous :) G un problèm .... g un formulaire sous access avec une liste qui affiche le résultat d'une requête, EX : essay = 12 J'aimerai récupé liste déroulante word 31 éléments macro [ par chantalou ] Je débute sur VBA et j'ai une question bête !J'ai une liste déroulante à afficher ds un modèle word qui contient une liste de 31 éléments.</STR Liste Déroulante [ par stephetsab ] Bonjour, voici mon problème. 1 classeur avec 2 feuilles. Sur la 1ere, une liste avec Nom, prénom, Donnée1, Donnée 2 etc...Sur la seconde feuille je vo ACCESS : liste de fichier word dans liste déroulante [ par marietotsie ] Marietotsie je cherche comment dans access faire une liste dé


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales