OVH Cloud OVH Cloud

Recupérer les valeurs d'une formule matricielle

16 réponses
Avatar
luck82
Bonjour;
J'ai stocké dans une cellule une serie de données comme ca: ={1;2;3;1.2.3}.
Est-il possible des les récupérer dans un tableau pour faire un graph.
J'ai beau chercher mais je vois pas comment faire.

6 réponses

1 2
Avatar
MichDenis
La fonction split est présente à partir d'excel 2000.
Donc pas disponible sous excel 97.

Le site de Frédéric Sigonneau présente 3 façons de la remplacer :

http://frederic.sigonneau.free.fr/code/Fonctions/SplitForExcel97_2.txt
Avatar
lSteph
Bonjour,
Je n'ai plus 97 ici, mais pourrais tester cela lundi
"pendant la pause" bien sûr. ;-)
Toutefois quelqu'un peut sans doute résoudre cela avant.

Je regarde déjà ce qui pourrait...

@+

lSteph

luck82 avait prétendu :
Bonjour;
C'est gentil de vous avoir donné tous ce mal pour faire cette macro.
Par contre chez moi ca me marche pas le deboger me dit que j'ai une erreur à
la ligne 5 colonne 8 (split).
J'ai recompilé le code et apparemment j'ai pas la bonne version d'excel.
En effet j'ai excel 97.
Je vais quand même essayé de retravaillé le code.

Merci.
,

Ok alors , obligé de passer par vba,
Tu obtiens ton graphique en Feuil2 en DblCliquant
sur la ligne voulue dans Feuil1.

http://cjoint.com/?lsxGyaw74g

Pour m ce code dans Feuil1

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
Dim gmat, hmat, imat
gmat = Split(Cells(ActiveCell.Row, 7), ";")
hmat = Split(Cells(ActiveCell.Row, 8), ";")
imat = Split(Cells(ActiveCell.Row, 9), ";")
For i = 0 To 2
With Feuil2

.Cells(i + 2, 2) = gmat(i)
.Cells(i + 2, 3) = CDbl(hmat(i))
.Cells(i + 2, 4) = CDbl(imat(i))

End With
Next
Feuil2.Activate
End Sub

Cdlt.

lSteph



--
- -


Avatar
lSteph
Bonjour,

Merci pour Luck
..et pour moi cela m'évitera de chercher autre chose.


Cordialement.

lSteph


MichDenis a formulé ce dimanche :
La fonction split est présente à partir d'excel 2000.
Donc pas disponible sous excel 97.

Le site de Frédéric Sigonneau présente 3 façons de la remplacer :

http://frederic.sigonneau.free.fr/code/Fonctions/SplitForExcel97_2.txt


--
- -

Avatar
JB
Version Excel 97

http://cjoint.com/?ltrVylF8DX

Function Convert97(chaine)
Sep = ";"
Application.Volatile
Dim temp()
i = 0
p = InStr(chaine, Sep)
Do While p > 0
i = i + 1
ReDim Preserve temp(1 To i)
temp(i) = CDbl(Left(chaine, p - 1))
chaine = Mid(chaine, p + 1)
p = InStr(chaine, Sep)
Loop
i = i + 1
ReDim Preserve temp(1 To i)
temp(i) = CDbl(chaine)
Convert97 = Application.Transpose(temp)
End Function

JB


Garder une seul cellule c'est justement mon objectif. En effet je fais un
tableau récapitulatif qui contient déjà pas mal de ligne, de colonn e et
plein de formules... .Donc, je ne peux pas me permettre d'utilliser des
cellules supplementaire(au risque que mon tableau devient illisible) pour
stocker les valeur de mon graph d'autant plus que j'ai 12 valeurs chaque
fois et par axe. Actuellement ces valeur sont stockées dans une cellules
sous la forme 1;2;3 .... . Quand il est nécessaire de faire le graph et bien
je fais de la saisie c'est à dire que je ressorts manuellement ces vale urs
que je mets sous forme de tableau sur une autre feuille... . Mon but c'est
de fais de l'économie de frappe et d'erreur. Je joint une partie de mon
tableau en cours de construction (sans les formules puisque ca passe pas la
barre des 500Ko) pour plus de clarté ci: http://cjoint.com/?lsuIccP5ef. Pour
l'exemple Cellule G5 = valeur X et H5 valeur Y
(pour l'instant ces valeurs me sont pas stockées sous forme matricielle)
Par contre je suis ouvert a tout autre propositions pour pouvoir récupe rer
ces valeurs facilement et faire mes graph.

Merci de votre aide.
Cdtl

...
Si tu gardes une seule cellule et que tu cliques sur l'outil graphique
tu n'aura qu'une seule valeur, la première de ta série
c'est pourquoi je te suggère d'entrée ta formule en matricielle dans
une plage
une plage contenant le nombre de cellule nécessaire à ta série.
Pour entrer en matricielle shift+ctrl+entrée

Cdlt.





Avatar
luck82
Merci pour votre contribution; la macro marche bien.
Ce problème m'a fait voire que VB est un outil très puissant et qu'il faut
que je me mette à l'apprendre rapidement. Alors ci vous avez quelques sites
interéssant à me proposer; je suis preneur.

Cordialement

Function Convert97(chaine)
Sep = ";"
Application.Volatile
Dim temp()
i = 0
p = InStr(chaine, Sep)
Do While p > 0
i = i + 1
ReDim Preserve temp(1 To i)
temp(i) = CDbl(Left(chaine, p - 1))
chaine = Mid(chaine, p + 1)
p = InStr(chaine, Sep)
Loop
i = i + 1
ReDim Preserve temp(1 To i)
temp(i) = CDbl(chaine)
Convert97 = Application.Transpose(temp)
End Function

JB


Garder une seul cellule c'est justement mon objectif. En effet je fais un
tableau récapitulatif qui contient déjà pas mal de ligne, de colonne et
plein de formules... .Donc, je ne peux pas me permettre d'utilliser des
cellules supplementaire(au risque que mon tableau devient illisible) pour
stocker les valeur de mon graph d'autant plus que j'ai 12 valeurs chaque
fois et par axe. Actuellement ces valeur sont stockées dans une cellules
sous la forme 1;2;3 .... . Quand il est nécessaire de faire le graph et
bien

je fais de la saisie c'est à dire que je ressorts manuellement ces valeurs
que je mets sous forme de tableau sur une autre feuille... . Mon but c'est
de fais de l'économie de frappe et d'erreur. Je joint une partie de mon
tableau en cours de construction (sans les formules puisque ca passe pas
la

barre des 500Ko) pour plus de clarté ci: http://cjoint.com/?lsuIccP5ef.
Pour

l'exemple Cellule G5 = valeur X et H5 valeur Y
(pour l'instant ces valeurs me sont pas stockées sous forme matricielle)
Par contre je suis ouvert a tout autre propositions pour pouvoir récuperer
ces valeurs facilement et faire mes graph.

Merci de votre aide.
Cdtl

...
Si tu gardes une seule cellule et que tu cliques sur l'outil graphique
tu n'aura qu'une seule valeur, la première de ta série
c'est pourquoi je te suggère d'entrée ta formule en matricielle dans
une plage
une plage contenant le nombre de cellule nécessaire à ta série.
Pour entrer en matricielle shift+ctrl+entrée

Cdlt.





Avatar
JB
Il y a par exemple:

http://www.excelabo.net
http://xlwiki.free.fr/wiki

Cordialement


Merci pour votre contribution; la macro marche bien.
Ce problème m'a fait voire que VB est un outil très puissant et qu'il faut
que je me mette à l'apprendre rapidement. Alors ci vous avez quelques s ites
interéssant à me proposer; je suis preneur.

Cordialement

Function Convert97(chaine)
Sep = ";"
Application.Volatile
Dim temp()
i = 0
p = InStr(chaine, Sep)
Do While p > 0
i = i + 1
ReDim Preserve temp(1 To i)
temp(i) = CDbl(Left(chaine, p - 1))
chaine = Mid(chaine, p + 1)
p = InStr(chaine, Sep)
Loop
i = i + 1
ReDim Preserve temp(1 To i)
temp(i) = CDbl(chaine)
Convert97 = Application.Transpose(temp)
End Function

JB


Garder une seul cellule c'est justement mon objectif. En effet je fais un
tableau récapitulatif qui contient déjà pas mal de ligne, de colo nne et
plein de formules... .Donc, je ne peux pas me permettre d'utilliser des
cellules supplementaire(au risque que mon tableau devient illisible) po ur
stocker les valeur de mon graph d'autant plus que j'ai 12 valeurs chaque
fois et par axe. Actuellement ces valeur sont stockées dans une cellu les
sous la forme 1;2;3 .... . Quand il est nécessaire de faire le graph et
bien

je fais de la saisie c'est à dire que je ressorts manuellement ces va leurs
que je mets sous forme de tableau sur une autre feuille... . Mon but c' est
de fais de l'économie de frappe et d'erreur. Je joint une partie de m on
tableau en cours de construction (sans les formules puisque ca passe pas
la

barre des 500Ko) pour plus de clarté ci: http://cjoint.com/?lsuIccP5e f.
Pour

l'exemple Cellule G5 = valeur X et H5 valeur Y
(pour l'instant ces valeurs me sont pas stockées sous forme matriciel le)
Par contre je suis ouvert a tout autre propositions pour pouvoir récu perer
ces valeurs facilement et faire mes graph.

Merci de votre aide.
Cdtl

...
Si tu gardes une seule cellule et que tu cliques sur l'outil graphique
tu n'aura qu'une seule valeur, la première de ta série
c'est pourquoi je te suggère d'entrée ta formule en matricielle d ans
une plage
une plage contenant le nombre de cellule nécessaire à ta série.
Pour entrer en matricielle shift+ctrl+entrée

Cdlt.







1 2