[VBA] Formule sous VBA avec tableau
Fermé
youyou
-
25 juil. 2007 à 17:54
zefoots Messages postés 146 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 septembre 2007 - 26 juil. 2007 à 16:32
zefoots Messages postés 146 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 septembre 2007 - 26 juil. 2007 à 16:32
A voir également:
- [VBA] Formule sous VBA avec tableau
- Tableau croisé dynamique - Guide
- Formule si et - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Formule excel pour additionner plusieurs cellules - Guide
11 réponses
modjibe
Messages postés
45
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
25 avril 2008
3
26 juil. 2007 à 11:10
26 juil. 2007 à 11:10
Il y'a très peu de fonctions disponibles dans un tableau non Excel. Percentile n'est sans doute pas disponible. Pour insérer une formule tu as la méthode InsertFormula de la classe Selection. Il y'a aussi Formula membre de Cell. A essayer. Mais tu ne pourras faire que des sommes ou des trucs de ce genre.
Si jamais tu seches encore n'hesite pas à utiliser l'explorateur d'objets. Tu trouves réponse à tout !
Si jamais tu seches encore n'hesite pas à utiliser l'explorateur d'objets. Tu trouves réponse à tout !
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
26 juil. 2007 à 11:13
26 juil. 2007 à 11:13
Salut
Salut dans le cas d'un tableau, tu écris juste :
ActiveCell.FormulaR1C1=PERCENTILE(nom_tableau,5%)
Enfin si j'ai bien compris ta question ^^
Cordialement
Salut dans le cas d'un tableau, tu écris juste :
ActiveCell.FormulaR1C1=PERCENTILE(nom_tableau,5%)
Enfin si j'ai bien compris ta question ^^
Cordialement
Juste une petite précision : la fonction "percentile" n'est pas plus importante que ça, ça aurait très bien pu être la fonction "average" ou autre.
Ma question est d'ordre syntaxique : comment placer les valeurs contenues dans un tableau comme argument d'une fonction?
Merci d'avance pour vos lumières!
Ma question est d'ordre syntaxique : comment placer les valeurs contenues dans un tableau comme argument d'une fonction?
Merci d'avance pour vos lumières!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour vos réponses!
Ta formule ne marche pas Fiddy, j'ai une erreur #NOM? dans la cellule (en fait les cellules car il y a plusieurs tableaux) où je calcule le 5èmes centile.
Je vous joins le code et je précise que mon tableau est une variable dans VBA mais je ne l'affiche pas dans un tableur excel, c'est donc juste un endroit où je stocke des données!
Ta formule ne marche pas Fiddy, j'ai une erreur #NOM? dans la cellule (en fait les cellules car il y a plusieurs tableaux) où je calcule le 5èmes centile.
Je vous joins le code et je précise que mon tableau est une variable dans VBA mais je ne l'affiche pas dans un tableur excel, c'est donc juste un endroit où je stocke des données!
Sub Macro1() Dim ctr As Integer Dim ctr2 As Integer Dim ctr3 As Integer Dim a As Double Dim tableau(519) As Single Dim tableau2(519) As Single Dim tableau3(519) As Single Sheets("data").Select For ctr = 2 To 59 If Cells(4, ctr).Value <> 0 Then a = Cells(4, ctr) + Sheets("produits").Cells(1, 53).Value / (100 * Cells(8, ctr + 1).Value * Cells(5, ctr + 1).Value) For ctr2 = 0 To 519 If Cells(7, ctr).Value <> "EUR" Then tableau(ctr2) = (Cells(ctr2 + 10, ctr).Value - Cells(8, ctr + 1).Value) * Cells(5, ctr).Value * a / Range("EUR" & Cells(7, ctr).Value).Value Else tableau(ctr2) = (Cells(ctr2 + 10, ctr).Value - Cells(8, ctr + 1).Value) * Cells(5, ctr).Value * a End If For ctr3 = 3 To 59 Step 3 If ctr3 <> ctr + 1 Then tableau2(ctr2) = tableau2(ctr2) + Cells(ctr2 + 10, ctr3).Value End If Next tableau2(ctr2) = tableau2(ctr2) + tableau(ctr2) + Cells(ctr2 + 10, 62).Value + Cells(ctr2 + 10, 63).Value tableau3(ctr2) = tableau2(ctr2) / Sheets("produits").Cells(1, 53).Value Next Cells(3, ctr + 1).Select ActiveCell.FormulaR1C1 = "=Percentile(tableau3, 5)" C'EST ICI QUE CA COINCE!!!!!!!!! End If Next End Sub
Dans la formule 5 est à remplacer par 5% (j'ai fait une petite erreur de frappe) mais ça ne règle pas le problème.
zefoots
Messages postés
146
Date d'inscription
samedi 9 juin 2007
Statut
Membre
Dernière intervention
11 septembre 2007
62
26 juil. 2007 à 14:17
26 juil. 2007 à 14:17
Salut,
je suis pas bien sûr d'avoir tout compris ce que tu voulais faire, par contre, je crois comprendre ce qui te pose problème.
quand tu écris : ActiveCell.FormulaR1C1 = "=Percentile(tableau3, 5)", j'imagine que tu veux faire tes calculs avec une valeur contenue dans tableau3. Or ici, tu as écris la chaîne de caractères "tableau3" et non pas sa valeur.
Bref, ici, il faut utiliser l'opérateur de concaténation de chaîne "&". Dans ce cas, ta fromule devient un truc du genre :
En gros, pour accéder à une valeur contenue dans un tableau, il faut écrire le nom du tableau plus le numéro d'indice de la valeur entre parentèses : ici on écrit donc
J'espère que ça t'aide.
je suis pas bien sûr d'avoir tout compris ce que tu voulais faire, par contre, je crois comprendre ce qui te pose problème.
quand tu écris : ActiveCell.FormulaR1C1 = "=Percentile(tableau3, 5)", j'imagine que tu veux faire tes calculs avec une valeur contenue dans tableau3. Or ici, tu as écris la chaîne de caractères "tableau3" et non pas sa valeur.
Bref, ici, il faut utiliser l'opérateur de concaténation de chaîne "&". Dans ce cas, ta fromule devient un truc du genre :
ActiveCell.FormulaR1C1 = "=Percentile(" & tableau3(ctr2) & ", 5)"Dans ce cas, tu écris bien la valeur contenue à l'indice ctr2 du tableau3
En gros, pour accéder à une valeur contenue dans un tableau, il faut écrire le nom du tableau plus le numéro d'indice de la valeur entre parentèses : ici on écrit donc
tableau3(ctr2)Attention, cette instruction ne doit pas être entre guillemets.
J'espère que ça t'aide.
Mon tableau ne contient pas qu'une seule valeur mais 520 valeurs dont je souhaite calculer le 5 ème centile. Si j'adapte ta formule en :
ça ne fonctionne toujours pas, encore une erreur de syntaxe?
Merci en tout cas, ça a l'air d'avancer!
ActiveCell.FormulaR1C1 = "=Percentile( & tableau3(0) & : & tableau3(519) &, 5%)"
ça ne fonctionne toujours pas, encore une erreur de syntaxe?
Merci en tout cas, ça a l'air d'avancer!
zefoots
Messages postés
146
Date d'inscription
samedi 9 juin 2007
Statut
Membre
Dernière intervention
11 septembre 2007
62
26 juil. 2007 à 14:48
26 juil. 2007 à 14:48
Oui, il y a une erreur. Regarde bien la formule que j'ai écrite plus haut. J'utilise 4 guillemets alors que toi tu n'en as que 2. C'est là ton erreur ...
ActiveCell.FormulaR1C1 = "=Percentile(" & tableau3(0) & : & tableau3(519) & ", 5%)"
me renvoie aussi une erreur de syntaxe...
Comment fait-on?
zefoots
Messages postés
146
Date d'inscription
samedi 9 juin 2007
Statut
Membre
Dernière intervention
11 septembre 2007
62
26 juil. 2007 à 16:32
26 juil. 2007 à 16:32
Le caractère " (guillemet) sert à délimiter un texte. Ils vont toujours par paire. Le 1er sert à délimiter le début d'une chaîne et le 2ème sert à délimiter la fin de la chaîne. Par exemple
Dans l'exemple que tu écris, si tu tiens à afficher le caractère : (deux points), il faut que tu écrives
Il y avait donc 6 guillemets à utiliser (et non pas 4 comme je l'ai dit plus haut, désolé ...)
"coucou"est équivalent à
"cou" & "cou"Autre exemple avec une variable
Dim Toto As Integer Dim Tutu As String Toto = 1234 Tutu = "cou" & Toto & "cou"la variable Tutu contiend maintenant la chaîne cou1234cou
Dans l'exemple que tu écris, si tu tiens à afficher le caractère : (deux points), il faut que tu écrives
ActiveCell.FormulaR1C1 = "=Percentile(" & tableau3(0) & ":" & tableau3(519) & ", 5%)"J'ai l'impression que tu as l'habitude de coder en php, je me trompe ? En php, effectivement, on peut mettre les variables à l'intérieur des guillemets, car chaque variable est précédée du signe $, ce qui permet à l'interpréteur de les reconnaître. Ca ne fonctionne pas de cette manière en VBA.
Il y avait donc 6 guillemets à utiliser (et non pas 4 comme je l'ai dit plus haut, désolé ...)