Signaler

Identifiant associé à une phrase dans une liste déroulante [Résolu]

Posez votre question Nashimok 14Messages postés mercredi 10 août 2016Date d'inscription 30 septembre 2016 Dernière intervention - Dernière réponse le 19 sept. 2016 à 18:15
Bonjour à tous,
pour un document de travail, j'ai fait une liste déroulante de phrases qui me permet de choisir dans ma colonne G la phrase qui convient.
Pour traiter mes données, je suis en train d'écrire un code en VBA qui me permettra de compter le nombre d’occurrence de chaque phrase. Dans ce code, pour éviter de réécrire toutes les phrases, j'aimerais utiliser des identifiants associés à chaque phrase.
(Comme j'ai déjà tout le travail de fait avec les phrases, ça m'arrangerait de ne pas avoir à reprendre chaque phrase pour lui associer son identifiant ... sachant que le classeur compte 16 feuilles ...)
Ce que j'aimerais faire, c'est que lorsque je sélectionne une phrase dans la liste déroulante, le code associé apparaisse automatiquement dans la colonne précédente (colonne F dans mon cas).
En PJ, mes références pour les phrases et leurs identifiants, et mon tableur avec la colonne en liste déroulante.
Merci d'avance pour votre aide !

Afficher la suite 
Utile
+0
moins plus
Bonjour,

un code en VBA qui me permettra de compter le nombre d’occurrence de chaque phrase
Tu écris parce qu'il n'a pas encore assez de fonctions excel pour le faire ?

le code associé apparaisse automatiquement dans la colonne précédente
Avec cette formule par exemple :
=DECALER(Feuil2!$C$1;EQUIV(G2;Feuil2!E:E;0)-1;0)
Raymond PENTIER 38844Messages postés lundi 13 août 2007Date d'inscription ContributeurStatut 1 octobre 2016 Dernière intervention - 11 août 2016 à 00:57
... ou avec la fonction INDEX
Répondre
Ajouter un commentaire
Utile
+0
moins plus
Super, ça marche avec DECALER et INDEX, j'ai choisi d'utiliser INDEX car je la trouve plus facile à comprendre, comme ce n'est pas moi qui va utiliser le document.

@gbinforme : en fait, j'écris un code VBA qui me permet de générer un graphique en fonction du nombre d'occurrences de chaque phrase quand je clique sur un bouton.

J'ai choisi le VBA parce que je sais faire, mais je t'avoue que je ne sais pas compter le nombre d'occurrences avec une formule Excel ... Je veux bien avoir l'astuce si tu l'as :)

Merci @gbinforme et @RaymondPENTIER en tout cas !
gbinforme 12546Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 30 septembre 2016 Dernière intervention - 13 août 2016 à 19:08
Bonjour,

C[-5] est une référence relative que l'enregistreur a déduit de ta position pour créer ta fonction.
Tu dois l'avoir en colonne L et donc la colonne -5 est G
si tu mets la formule ainsi tu as des références absolues et cela devrait fonctionner :
ActiveCell.FormulaR1C1 = "=COUNTIF('Risques élevés'!C7,""901"")"

Cependant, pour éviter toute la gymnastique avec les fonctions en anglais et les références en L1C1, je te conseille d'écrire :
ActiveCell.FormulaLocal = "=NB.SI('Risques élevés'!G:G;""901"")"

ce qui abouti au même résultat mais c'est excel qui se débrouille avec ses traductions !

n'est-ce pas plus simple ?
Répondre
Nashimok 14Messages postés mercredi 10 août 2016Date d'inscription 30 septembre 2016 Dernière intervention - 17 août 2016 à 18:40
Merci pour l'astuce !
Comme j'ai eu une coupure d'internet, j'ai fini par trouver une autre solution très similaire qui fonctionne aussi (un peu un mix de tes 2 solutions finalement).

Puisque je voulais attribuer la valeur du nombre d'occurrences à une variable occ, j'ai écrit en VBA :
occ=Application.CountIf(Worksheets("Risques élevés").Range("G:G"), "901")

mais peut-être que c'est trop compliqué ? Je suis preneuse de toute astuce pour simplifier mon code !

En tout cas, cette méthode me permet de supprimer un paquet de lignes de code et donc de simplifier le tout, ça c'est top !
Et justement, j'aimerais appliquer cette méthode à un autre critère pour créer un autre graphique.
Sauf que ce critère est la présence d'un chiffre dans ma cellule : si il y a un 1 dans le texte, occ=occ+1. Le 1 (ou 2 ou 16, puisque j'ai 16 catégories) se trouve toujours en première position dans le texte.

À l'heure actuelle, j'ai écrit les choses comme suit :
If UCase(Cells(ligne, "A")) Like "1-" & "*" Then
            nb_récep_expé = nb_récep_expé + 1
        End If


J'aimerais appliquer la fonction COUNTIF, sauf que je ne trouve pas comment faire pour écrire l'équivalent du
Like "1-" & "*"

dans le COUNTIF ...

Une idée ?
Répondre
gbinforme 12546Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 30 septembre 2016 Dernière intervention - 17 août 2016 à 21:58
Bonjour,

mais peut-être que c'est trop compliqué ?
non c'est très bien !

j'aimerais appliquer cette méthode à un autre critère
Si j'ai compris ton but tu peux écrire :
nb_récep_expé = Application.CountIf(Worksheets("Risques élevés").Range("A:A"), "1-*")
Répondre
Nashimok 14Messages postés mercredi 10 août 2016Date d'inscription 30 septembre 2016 Dernière intervention - 19 sept. 2016 à 14:09
Après tout ce temps, je reviens à la vie !

Ta dernière solution avec "1-*" marche parfaitement, donc j'ai réussi à tout débloquer.

Merci encore pour ton aide !
Répondre
gbinforme 12546Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 30 septembre 2016 Dernière intervention - 19 sept. 2016 à 18:15
Bonjour, merci du retour et content que tu ais solutionné ton problème.
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !