XL 2019 VBA Evaluate : #Erreur

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Cheyenne_2021

XLDnaute Junior
Bonjour,



J’ai fait un graphique (Onglet Semaine du 2 nov), je voudrais qu’il se construise de façon automatique (vba : Module Choix_sem).

J’ai 2 problèmes :

Position : Je dois trouver un n° au hasard entre -3 et 3

J’ai essayé :

  • Evaluate("=ALEA.ENTRE.BORNES(-3;3)") : Erreur #VALEUR
  • Evaluate("=if([T_2Nov[position]].Rows(1)=0;1;2") : Erreur #VALEUR


  • Une formule qui concatène le nom de l’évènement et la date
  • Avec excel =[@evènement]&CAR(10) & TEXTE([@[date debut]];"jjmm") : OK
  • Avec vba : Evaluate =(« =[@evènement]&CAR(10) & TEXTE([@[date debut]];"jjmm") ») : : Erreur #VALEUR


Je ne sais pas du tout comment m’en sortir.
Merci,
 

Pièces jointes

Bonjour.
Evaluate pour des expressions mettant en œuvre des fonctions Excel les requiert en anglais, et avec ',' comme séparateur d'arguments. Le signe égal n'est pas utile mais ne gène peut être pas. Pour tout ce qui dérive d'aléat je préfère des expressions purement VBA basées sur Rnd. Une instruction Randomize devant assure des séquences différentes à chaque exécution. On ne peut, dans les expressions à évaluer, mentionner de propriétés ni méthodes. Tout au plus peut on en déduire une valeur y étant concaténée. Au lieu de B = Evaluate("=if((T_2Nov[position]).Rows(1)=0,1,2") j'aurais peut être mis B = IIf([T_2Nov[Position]].Rows(1).Value = 0, 1, 2)

En résumé: vous essayez plus souvent que judicieux d'utiliser Evaluate pour retrouver la même chose qu'une formule Excel.
Evaluate("=[@evènement]&CAR(10)&TEXTE([@[date debut]];"jjmm")") Non ! Éventuellement :
[T_2Nov[evènement]].Row(1).Value & vbLf & Format([T_2Nov[date debut]].Row(1).Value, "ddmm")
 
Dernière édition:
#Dranreb
avec RND je n'ai pas trouvé comment trouver des chiffres négatifs, ou plutôt comment avoir des chiffres dans des bornes, par exemple de -3 à 3 ?
Int(3 * Rnd) - 3 : ne donne que des chiffres negatifs
Int(3 * Rnd) +1 : ne donne que des chiffres positifs

Et pour cet evaluate : [[@evènement]&CAR(10)&TEXTE([@[date debut]],"jjmm")] , j'ai essaye de remplacer le ; par une virgule mais cela ne fonctionne pas.
Merci
 
Essayez Int(Rnd * 7 - 2.5)
Le deuxième ne va pas parce qu'il n'existe pas de ligne courante du tableau (celle portant la formule qui n'existe forcément pas ici) permettant d'interpréter le '@' comme désignant cette mystérieuse ligne, et de plus on ne sait même pas de quel tableau il s'agit, pour la même raison. Et c'est pas TEXTE mais TEXT en anglais, ni CAR mais CHAR. Non vraiment c'est souvent plus simple de mettre au point une expression VBA qui fait la même chose.
 
Dernière édition:
Suite à vos remarques, j'ai cherché différemment et j'ai trouvé une solution.

VB:
For r = 1 To [Année].Rows.Count
    A = [Année[Semaine  début (N°)]].Rows(r)
    'MsgBox ("a : " & A)
    If [Num_semaine] = [Année[Semaine  début (N°)]].Rows(r) Then
        [T_2Nov].ListObject.ListRows.Add (1)
        [T_2Nov[evènement]].Rows(1) = [Année[Nom Evt]].Rows(r)
        
        [T_2Nov[date debut]].Rows(1) = [Année[date début]].Rows(r)
        
          [T_2Nov[position]].Rows(1) = Int(7 * Rnd) - 3
          If [T_2Nov[position]].Rows(1) = 0 Then        ' pour ne pas avoir d'étiquettes sur la ligne 0
            'MsgBox ("ligne à 0")
            [T_2Nov[position]].Rows(1) = 1
          End If
        
        
         B = [Année[Nom Evt]].Rows(r)
         B2 = [Année[date début]].Rows(r)
         B3 = Format([Année[date début]].Rows(r), "dd/mm")
         [T_2Nov[evt_date]].Rows(1) = B & Chr(10) & B3
        l = l + 1
     End If
 Next r

Merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
2 K
G
Retour