Probléme avec une macro en VBA pour Excel

SerialProgrammer -  
 KdTcA -
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

KdTcA
 
'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
KdTcA
 
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
 
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
KdTcA
 
passe par Cells(n,m).value et une variable qui te mets ce que tu veux...
0
SerialClimber
 
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
KdTcA
 
si ta variable interne est du type string y'a pas de souci...
0
random Messages postés 1612 Date d'inscription   Statut Membre Dernière intervention   155
 
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
 
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
KdTcA
 
l'essentiel c'est que çà marche et que l'utilisateur est content! :)
0
SerialClimber
 
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
KdTcA
 
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