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
Pb liste déroulante format texte.gif
 

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
demo4.gif


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

demo4.gif

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????? ;) ;) o_O

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 :D
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 :rolleyes:

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

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 347
Membres
102 868
dernier inscrit
JJV