Probléme avec une macro en VBA pour Excel

Fermé
SerialProgrammer - 2 août 2005 à 09:34
 KdTcA - 2 août 2005 à 19:01
Bonjour à tous,

Voici mon probléme. J'ai écrit une macro sous Excel pour faire de la manipulation de mise en forme de chaîne de caractére. Je me heurte au problème suivant: Je calcule plusieurs valeurs numériques que je souhaite fair figurer chacune dans des celluless successives au sein d'une même colonne. Le résultat devra être exploitable par un logiciel de simulation indépendant d'Excel, qui nécessite des formats très spéciaux. Ainsi je dois faire figurer dans chaque cellule le nombre sous la forme 0.00000000000000e-08 (et non pas 0.00000000000000E-08 !!) la précision est également importante 'd'où les 14 chiffres derriéres la virgule.

Voici le code que je propose:
For i = 1 To nbre_sample
Worksheets(1).Cells(i, 2).Value = i * periode
tmp = CStr(ActiveSheet.Cells(i, 2).Value)
longueur = Len(tmp)
first_lettre = Left(tmp, 1)
last_lettres = Mid(tmp, 3, longueur - 6)
puissance = Right(tmp, 3)

new_val_cellule = first_lettre & "." & last_lettres & "e" & puissance

Worksheets(1).Cells(i, 2).Activate

Worksheets(1).Cells(i, 2).Value = ActiveCell.Characters.Insert(new_val_cellule) 'tempo)
Next i

Lors de l'exécution, j'ai l'erreur n°1004: impossible de lire la proprité insert de characters.
Quelqu'un a-t-il une idée, ou une solution ?

Merci beaucoup
A voir également:

9 réponses

'lut
Je pense que tu ne peux changer le "E" par un "e" car ta cellulle n'a pas pour valeur une chaine mais un nombre. Ce nombre n'est pas "0.00000000000000E-08" mais en réalité "0"

A moins que je dise n'importe quoi...

Je vais tester çà...
0
Je peux pas tester je n'ai pas toutes les données, si tu peux mettre fon fichier en lien téléchargeable, je regarderais..
0
SerialProgrammer
2 août 2005 à 14:22
En fait le code que je te présente crée les données que je veux utiliser. Le pble est un pble de mise en forme. Il faut juste connaître le moyen de formater la cellule de telle sorte qu'elle accepte d'afficher: 0.0000000000001e-08 ... peu importe le nombre de zéro en fait... En fait pour l'instant le code en + ds la macro est juste celui pour demander le nbre d'itérations (variable nbre_sample) et la fréquence (variable frequence). Penses-tu pouvoir qd meme jeter un oeil à mon code ? As-tu des infos compléter sur la propriété Characters de l'objet Cells ?

Merci beaucoup à tous ceux qui peuvent m'aider.
0
passe par Cells(n,m).value et une variable qui te mets ce que tu veux...
0
SerialClimber
2 août 2005 à 14:54
Le probléme de cell(i,j).value est qu'il force le type comme étant numérique... et du coup le "e" devient "E" ... précisément là est mon pble ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
si ta variable interne est du type string y'a pas de souci...
0
random Messages postés 1612 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 30 mars 2006 155
2 août 2005 à 15:10
j'ai pense à ça
Function conv(x As Variant, Optional separateur As String) As Variant
Dim boucle As Integer
Dim tempo As String
tempo = Format(x, "0.00000000000000E+00")
tempo = Replace(tempo, "E", "e")

If separateur = "," Then tempo = Replace(tempo, ".", ",")
If separateur = "." Then tempo = Replace(tempo, ",", ".")
conv = tempo

End Function
0
SerialProgrammer
2 août 2005 à 15:48
Merci pour vos réponses. Eh bien le problème est résolu. Il fallait forcer le type de la variable new_val_cellule comme étant une string et ca passe. La dernière solution proposé est encore mieux je pense. Je vais la tester qd meme. Merci.
0
l'essentiel c'est que çà marche et que l'utilisateur est content! :)
0
SerialClimber
2 août 2005 à 17:16
lol oui c'est vrai ! ... Bon juste une précision je ne suis pas informaticien. Je travaille dans le domaine de la mesure, de l'optique et des hyperfréquences et j'avais besoin d'une macro pour optimiser et fusionner mesures et simulations.

Vous êtes tous informaticiens j'imagine, non ?
0
oh non loin de là! lol

je suis en dernière année d'école d'ingénieur en techniques de l'industrie par alternance...
0