Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Pb cellule liée d'une liste déroulante qui renvoie du texte

XLMan

XLDnaute Nouveau
Bonsoir tous,
voilà j'ai un pb sur une liste déroulante qui pointe sur un plage "année" contenant des années (2020 ou 2021, etc.) saisie ds la propriété ListFillRange.
Dans la propriété LinkedCell la cellule E3 qui reçoit le résultat. Cette cellule E3 est ensuite utilisée ds des formules.
Mon Pb c'est que dès que je sélectionne une année ds la liste la cellule liée E3 a bien l'année mais au format texte ce qui fait que les cellules dépendantes ne fonctionnent pas.
Si je convertie E3 en nombre ça fonctionne mais dès que je choisi à nouveau une année ds la liste, le contenu E3 est de nouveau en texte.
Comment s'en sortir pour que E3 reste en nombre ? J'ai essayé de mettre num(E3) ds LinkedCell mais il n'accepte aucune formule
Je précise que je ne souhaite pas faire de VBA

Voir l'animation jointe.
Merci pour votre aide
Gaëlle
 

goube

XLDnaute Impliqué
Bonsoir,
Un bout de fichier vaut mieux qu'une belle animation.

Sinon, dans la mesure du possible, utilise plutôt toupie au lieu de liste déroulante.
Cordialement.
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
a la vue da ta capture il me semble que c'est un msforms.combobox

je viens donc de faire un simple test avec un combobox dans une feuille et je n'ai pas ce soucis et sans conversion
code du combobox dans le module de la feuille
VB:
Private Sub ComboBox1_Change()
[I3] = ComboBox1.Value
End Sub

Private Sub ComboBox1_DropButtonClick()'remplissage de la combo de 1950 à cette année +10
With ComboBox1: .List = Evaluate("ROW(1950:" & Year(Date) + 10 & ")"): End With
End Sub


par contre quand on met la cellule au format text on a bien ton soucis


conclusion c'est le format de ta cellule qu'il faut remettre en standard
 

patricktoulon

XLDnaute Barbatruc
bonjour job75
??????
c'est bien un control ActivX
donc pourquoi utiliser linkedcell pour du numérique?????

apres
@XLMan
utiliser E3 comme cellule intermédiaire heu...
si tu veux tous les chemins mènent a Rome ,cela dit si tu y va a trottinette et que tu est dans le nord je serais pas étonné que tu change de moyen de transport en cour de route
wrarfff...
 

XLMan

XLDnaute Nouveau
Bonsoir tous, @job75,

@job75, pour lever toute ambiguïté je suis elle, une fille mais j’utilise le compte de mon copain avec pseudo XLMAN

Désolée, je ne sais pas s'il faut créer une autre discussion mais je vous soumets un autre pb ennuyeux pour sommer des valeurs avec sommeprod sachant que la plage prise ds sommeprod diffère selon qu’il s’agit d’une année bissextile ou non (voir fichier joint où j'ai créé 2 onglets pour bien montrer l'exemple mais évidemment il est reproductible en choisissant l'année 2020 ou 2021 par exemple via la liste déroulante ds l'un ou l'autre des 2 onglets)

L’idée ici est de sommer par mois les heures par personne. Avec la fonction Sommeprod je m’en sortirais très bien si la plage restait fixe. Mais comme les données changent (+1 ligne ou –1 ligne) selon le choix d’une année bissextile ou pas, la matrice n’est plus la même et génère une erreur ds mes calculs (voir onglet "Année non bissextile")

J’ai bien tenté une plage dynamique en nommant ma plage et en utilisant DECALER(…. ;NBVAL(…)) mais ça ne marche avec NBVAL(B :B) pour la colonne B des mois car il me compte tjs 366 même en année non bissextile car la cellule B368 n’a pas de valeur mais contient une formule (voir en bas de l'onglet "Année non bissextile")

Bref je ne m’en sors pas pour transformer cette formule : =SOMMEPROD(($K6=$B$3:$B$368)*(L$5=$C$2:$I$2)*($C$3:$I$368)) qui prendrait en compte une plage dynamique selon l’année bissextile ou non (2 cas possibles en fait)

Merci encore pour votre aide
Gaëlle
 

Pièces jointes

  • Plage dynamique pour sommeprod.xlsm
    114.3 KB · Affichages: 13

JHA

XLDnaute Barbatruc
Bonjour à tous,

Si tu changes la formule en colonne "A"
VB:
=SI(ANNEE(A3+1)>ANNEE(A3);"";A3+1)
par
Code:
=SI(ANNEE(A3+1)>ANNEE(A3);0;A3+1)

Les erreurs doivent disparaitre

Dans l'onglet "Année bissextile" j'ai modifié les formules pour éviter la colonne "B" des mois en texte.

JHA
 

Pièces jointes

  • Plage dynamique pour sommeprod.xlsm
    115.6 KB · Affichages: 5

job75

XLDnaute Barbatruc
Bonjour XlMan, JHA, le forum,

On peut laisser les formules avec les textes vides "" en colonnes A:I.

Et dans la formule en L6 remplacer le dernier astérisque * par le point-virgule :
Code:
=SOMMEPROD(($K6=$B$3:$B$368)*(L$5=$C$2:$I$2);$C$3:$I$368)
Dans la plage $C$3:$I$368 seules les valeurs numériques sont prises en compte.

Bon dimanche.
 

Pièces jointes

  • Plage dynamique pour sommeprod (1).xlsm
    115.5 KB · Affichages: 1

job75

XLDnaute Barbatruc
Maintenant pour résoudre le problème posé au post #1 il ne faut pas utiliser la propriété LinkedCell.

Mais utiliser cette macro dans le code de la feuille :
VB:
Private Sub ComboBox1_Change()
[A1] = ComboBox1.Value
ActiveCell.Activate 'ôte le focus
End Sub
Fichier (2), A1 contient maintenant un "vrai" nombre.
 

Pièces jointes

  • Plage dynamique pour sommeprod (2).xlsm
    122 KB · Affichages: 2

job75

XLDnaute Barbatruc
Notez que si l'on remplace le contrôle ActiveX par un contrôle de formulaire il n'y a plus de problème.

Mais la taille du texte dans la Zone combinée est trop petite et on ne peut pas la modifier.
 

XLMan

XLDnaute Nouveau
Bonjour à tous, @job75,
ça marche très bien.
encore une fois vous êtes formidables, merci beaucoup à vous et à @job75 pour l'adaptation de la formule. Même si c'est le but d'un forum, c'est tjs sympa et bien de noter l'entraide qu'on y trouve.
Bravo à vous.
Gaëlle
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…