Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2819 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro VBA sous Excel

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Macro VBA sous Excel

n°384474
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 15:03:59  profilanswer
 

Bonjour
 
j'avais une petite macro à créer sous Excel qui permet d'automatiser du traitement de données
c'est à dire qu'au lieu de copier coller des données, la macro le fait automatiquement
 
il y a donc dans cette macro pas mal de fonction de conversions
cint, cstr, cdbl etc...
 
sur mon poste, tout va bien, je descends le tester sur la machine en question, tout plante, notamment au niveau de ces fonctions de conversions
 
y'aurait t'il des références ou des trucs à vérifier qui pourraient faire planter ça ?
merci


---------------
Music|Market|Feed|Loom|DVD
mood
Publicité
Posté le 06-05-2003 à 15:03:59  profilanswer
 

n°384485
walli
Posté le 06-05-2003 à 15:10:11  profilanswer
 

elle fait appel à des activeX ta macro ?


---------------
NP :
n°384498
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 15:16:58  profilanswer
 

walli a écrit :

elle fait appel à des activeX ta macro ?


 
nan c'est vraiment une macro bidon
avec une sub principale qui fait du blabla de récup de données dans un fichier texte et qui colle dans un fichier excel
+ 2 petites fonctions bidons  
 
rien de compliqué
 
trop l'air d'un con, chez moi tout marche et arrivé chez le gars tout foire !


---------------
Music|Market|Feed|Loom|DVD
n°384510
walli
Posté le 06-05-2003 à 15:22:21  profilanswer
 

pbs de droits de lecture/ecriture des fichiers  :??:
edit : j'ai rien dit t'as dit qe ca plantait au niveau des fonctions de conversions...


Message édité par walli le 06-05-2003 à 15:23:30

---------------
NP :
n°384530
drasche
Posté le 06-05-2003 à 15:31:53  profilanswer
 

Vérifie un coup les paramètres régionaux (séparateur de milliers, séparateur décimal) pour voir s'ils sont identiques sur les deux machines.
 
(désolé pour le retard, j'ai tendance à ignorer les titres avec Excel dedans :D)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°384534
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 15:33:36  profilanswer
 

drasche a écrit :

Vérifie un coup les paramètres régionaux (séparateur de milliers, séparateur décimal) pour voir s'ils sont identiques sur les deux machines.
 
(désolé pour le retard, j'ai tendance à ignorer les titres avec Excel dedans :D)
 


 
ok vé voir ça merci !
faut que je prenne en compte le maximum de possibilités, comme ça je vérifie tous mes réglages et je comparerais là bas !


---------------
Music|Market|Feed|Loom|DVD
n°384536
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 15:35:31  profilanswer
 

je vérifie ça dans le panneau de conf ou directement sous excel ?


---------------
Music|Market|Feed|Loom|DVD
n°384548
drasche
Posté le 06-05-2003 à 15:40:18  profilanswer
 

panneau de configuration car Excel en dépend :jap:


Message édité par drasche le 06-05-2003 à 15:40:53

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°384550
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 15:40:47  profilanswer
 

drasche a écrit :

panneau de configuration :jap:


 
ok ben je vais noter mes paramètres et vérifier les leurs !
 
d'autres idées ?


---------------
Music|Market|Feed|Loom|DVD
n°384598
mareek
Et de 3 \o/
Posté le 06-05-2003 à 15:53:53  profilanswer
 

Loom the gloom a écrit :

Bonjour
 
j'avais une petite macro à créer sous Excel qui permet d'automatiser du traitement de données
c'est à dire qu'au lieu de copier coller des données, la macro le fait automatiquement
 
il y a donc dans cette macro pas mal de fonction de conversions
cint, cstr, cdbl etc...
 
sur mon poste, tout va bien, je descends le tester sur la machine en question, tout plante, notamment au niveau de ces fonctions de conversions
 
y'aurait t'il des références ou des trucs à vérifier qui pourraient faire planter ça ?
merci


vérifie que les chaines que tu convertis via cint, cdbl et consort sont bien des nombres avec la fonction isnumeric().
et si tu veux être sûr qu'il n'y a pas de dépassement de capacité, convertie d'abord ta chaine en double (cdbl()) et vérifie que le nombre ne dépasse pas les bornes de ton type "final".


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
mood
Publicité
Posté le 06-05-2003 à 15:53:53  profilanswer
 

n°384633
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 16:03:06  profilanswer
 

mareek a écrit :


vérifie que les chaines que tu convertis via cint, cdbl et consort sont bien des nombres avec la fonction isnumeric().
et si tu veux être sûr qu'il n'y a pas de dépassement de capacité, convertie d'abord ta chaine en double (cdbl()) et vérifie que le nombre ne dépasse pas les bornes de ton type "final".


 
en fait je t'explique  
les données en question sont des nombres stockées sur 10 caractères
par exemple 0000045,10
 
donc je cherche à convertir la chaine en un numérique pour supprimer les zéros superflus
donc à priori pas de problème de dépassement de capacité sur de si ptits nombres, si ?


---------------
Music|Market|Feed|Loom|DVD
n°384642
mareek
Et de 3 \o/
Posté le 06-05-2003 à 16:07:08  profilanswer
 

Loom the gloom a écrit :


 
en fait je t'explique  
les données en question sont des nombres stockées sur 10 caractères
par exemple 0000045,10
 
donc je cherche à convertir la chaine en un numérique pour supprimer les zéros superflus
donc à priori pas de problème de dépassement de capacité sur de si ptits nombres, si ?

ben les Int sont très limités: 32767<x<-32768
Et puis si un caractère non numérique s'est glissé dans ta chaine, pof, ça plante.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°384647
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 16:09:06  profilanswer
 

mareek a écrit :

ben les Int sont très limités: 32767<x<-32768
Et puis si un caractère non numérique s'est glissé dans ta chaine, pof, ça plante.


 
nan mais là j'ai testé en mode debug, ça crashe dès la première itération de ma boucle sur le premier champ qui ne contient ni caractère non numérique ni autres, et qui rentre bien dans l'intervalle
 
en fait le problème semble plus se situer du coté des converts en général
il plante sur tous les converts,et nul part d'autre
et chez moi ça marche  :fou:


---------------
Music|Market|Feed|Loom|DVD
n°384653
drasche
Posté le 06-05-2003 à 16:11:18  profilanswer
 

Loom the gloom a écrit :


 
en fait je t'explique  
les données en question sont des nombres stockées sur 10 caractères
par exemple 0000045,10
 
donc je cherche à convertir la chaine en un numérique pour supprimer les zéros superflus
donc à priori pas de problème de dépassement de capacité sur de si ptits nombres, si ?


tip: VB ne connaît que le format anglo-saxon.  Si tu tentes d'assigner "0000045,10", soit il plante, soit il interprète mal son contenu.  Le point est le seul séparateur décimal acceptable dans ce cas: "0000045.10" est donc la bonne string à convertir en numérique.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°384658
mareek
Et de 3 \o/
Posté le 06-05-2003 à 16:13:27  profilanswer
 

drasche a écrit :


tip: VB ne connaît que le format anglo-saxon.  Si tu tentes d'assigner "0000045,10", soit il plante, soit il interprète mal son contenu.  Le point est le seul séparateur décimal acceptable dans ce cas: "0000045.10" est donc la bonne string à convertir en numérique.

:non: VB se base sur les paramètres régionnaux donc il reconnait la virgule dans les nombres sur les PC Français.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°384661
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 16:14:10  profilanswer
 

drasche a écrit :


tip: VB ne connaît que le format anglo-saxon.  Si tu tentes d'assigner "0000045,10", soit il plante, soit il interprète mal son contenu.  Le point est le seul séparateur décimal acceptable dans ce cas: "0000045.10" est donc la bonne string à convertir en numérique.


 
ben non puisque dans chez moi ça marche avec la ,


---------------
Music|Market|Feed|Loom|DVD
n°384663
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 16:14:45  profilanswer
 

mareek a écrit :

:non: VB se base sur les paramètres régionnaux donc il reconnait la virgule dans les nombres sur les PC Français.


 
probablement que sur le pc en question, c'est le . qui est considéré comme séparateur d'ou l'erreur ???


---------------
Music|Market|Feed|Loom|DVD
n°384666
mareek
Et de 3 \o/
Posté le 06-05-2003 à 16:16:10  profilanswer
 

Loom the gloom a écrit :


 
probablement que sur le pc en question, c'est le . qui est considéré comme séparateur d'ou l'erreur ???

peut-être.
 
c'est quoi le message d'erreur au fait ?
"erreur 13 type incompatible", je parie.


Message édité par mareek le 06-05-2003 à 16:16:31

---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°384667
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 16:17:11  profilanswer
 

mareek a écrit :

peut-être.
 
c'est quoi le message d'erreur au fait ?
"erreur 13 type incompatible", je parie.


 
ouais [:ddr555]


---------------
Music|Market|Feed|Loom|DVD
n°384674
mareek
Et de 3 \o/
Posté le 06-05-2003 à 16:18:36  profilanswer
 

si tu vérifiais ta chaine avec la fonction isnumeric(), tu n'aurais pas eu ce message :o


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°384679
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 16:21:04  profilanswer
 

mareek a écrit :

si tu vérifiais ta chaine avec la fonction isnumeric(), tu n'aurais pas eu ce message :o


 
mais chez moi ça marche :o
 
admettons que sur ce pc , le caractère par défaut est . et non ,
 
si j'avais fait un isnuméric, il aurait vu le souci ?


---------------
Music|Market|Feed|Loom|DVD
n°384684
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 16:22:19  profilanswer
 

et si je testais en changeant la , en . ? [:meganne]


---------------
Music|Market|Feed|Loom|DVD
n°384686
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 16:23:50  profilanswer
 

bon j'ai donc changé le caractère
 
et ça ne plante pas
mieux, il me remplace même le caractère , par . dans le fichier excel final !!!!!


---------------
Music|Market|Feed|Loom|DVD
n°384688
mareek
Et de 3 \o/
Posté le 06-05-2003 à 16:24:19  profilanswer
 

Loom the gloom a écrit :


 
mais chez moi ça marche :o


C'est pas une excuse, tu dois verifier toutes les conneries potentiels de tes utilisateurs (et les utilisateurs sont potentiellement très très cons).
 

Loom the gloom a écrit :

admettons que sur ce pc , le caractère par défaut est . et non ,
 
si j'avais fait un isnuméric, il aurait vu le souci ?

ben oui, tu n'aurait pas traité cette case.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°384691
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 16:25:51  profilanswer
 

mareek a écrit :


C'est pas une excuse, tu dois verifier toutes les conneries potentiels de tes utilisateurs (et les utilisateurs sont potentiellement très très cons).
 
ben oui, tu n'aurait pas traité cette case.


 
certes mais je n'avais pas grand chose à tester, la macro ne faisant presque rien
 
le problème c'est qu'il faut que je la traite.
ma donnée stockée sous forme 0000510,55 doit se retrouver dans le fichier excel sous la forme 510,55


---------------
Music|Market|Feed|Loom|DVD
n°384700
mareek
Et de 3 \o/
Posté le 06-05-2003 à 16:31:50  profilanswer
 

Loom the gloom a écrit :


 
certes mais je n'avais pas grand chose à tester, la macro ne faisant presque rien
 
le problème c'est qu'il faut que je la traite.
ma donnée stockée sous forme 0000510,55 doit se retrouver dans le fichier excel sous la forme 510,55


 
en fait ton code doit être de la forme suivante

Code :
  1. If IsNumeric(MaChaine) then
  2.     MonNombre = CDbl(MaChaine)
  3. else
  4.     'Message d'erreur ou traitement spécifique de la chaine
  5. end if


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°384708
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 16:35:07  profilanswer
 

mareek a écrit :


 
en fait ton code doit être de la forme suivante

Code :
  1. If IsNumeric(MaChaine) then
  2.     MonNombre = CDbl(MaChaine)
  3. else
  4.     'Message d'erreur ou traitement spécifique de la chaine
  5. end if




 
ok je veux bien
moyennant des erreurs de saisie dans les données, le code serait ça
 
mais le problème, c'est que là ça plante sur une donnée qui est bonne ! pas de mauvais caractère etc...
la donnée est valide, et comme dit, j'ai fait du déboguage pas à pas, il semblerait que ça plante sur chaque conversion... ce n'est donc pas un problème de données !


---------------
Music|Market|Feed|Loom|DVD
n°384812
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 17:10:05  profilanswer
 

bon alors je suis allé voir sur leur poste, et effectivement, chez eux le séparateur par défaut est le point et non la virgule
 
or si je fais la modif chez moi, le programme marche quand même !!
 
y'aurait il un moyen de contourner ça ?
c'est à dire que malgré le fait que le séparateur soit le . et que mon fichier contienne des , , faire en sorte que ça marche ?


---------------
Music|Market|Feed|Loom|DVD
n°384830
mareek
Et de 3 \o/
Posté le 06-05-2003 à 17:16:41  profilanswer
 

faut détecter le séparateur utilisé sur la machine et remplacer la virgule par le séparateur en question.
comme ça:
 

Code :
  1. dim sep as string
  2. sep = mid(cstr(1.1),1,1)
  3. MaChaine=replace(machaine,",",sep)
  4. 'traitement de MaChaine


 
enfin, ça ne marche que si tu es sûr que le separateur de decimal utilisé dans MaChaine est une virgule.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°384832
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 17:16:59  profilanswer
 

et effectivement, si je fais un pas à pas, j'ai une fonction qui récupère la donnée sous forme de string "0000540,52"  
puis je fais un cdbl de cette chaine et je retrouve 540.52 avec le point (car j'ai changé ça dans les paramètres régionaux)
 
ça voudrait dire qu'en bas il ne fait pas cette transcription...
une idée ?


---------------
Music|Market|Feed|Loom|DVD
n°384833
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 17:17:57  profilanswer
 

mareek a écrit :

faut détecter le séparateur utilisé sur la machine et remplacer la virgule par le séparateur en question.
comme ça:
 

Code :
  1. dim sep as string
  2. sep = mid(cstr(1.1),1,1)
  3. MaChaine=replace(machaine,",",sep)
  4. 'traitement de MaChaine


 
enfin, ça ne marche que si tu es sûr que le separateur de decimal utilisé dans MaChaine est une virgule.


ben tout ce dont je suis sur c'est que dans ma donnée, j'ai des virgules
le séparateur par défaut sur le poste est le .
 
donc voilà  
tu penses donc que je dois faire comme ça ?


---------------
Music|Market|Feed|Loom|DVD
n°384846
mareek
Et de 3 \o/
Posté le 06-05-2003 à 17:22:47  profilanswer
 

Loom the gloom a écrit :


ben tout ce dont je suis sur c'est que dans ma donnée, j'ai des virgules
le séparateur par défaut sur le poste est le .
 
donc voilà  
tu penses donc que je dois faire comme ça ?

je te donne une solution, c'est à toi de faire le choix [:spamafote]


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°384851
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 17:23:39  profilanswer
 

mareek a écrit :

je te donne une solution, c'est à toi de faire le choix [:spamafote]


 
ok je tente
le souci c'est que chez moi ça marche quoi que je fasse, je ne pourrais même pas te dire si ta sol est bonne !


---------------
Music|Market|Feed|Loom|DVD
n°384859
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 17:26:03  profilanswer
 

bon ton cstr(1.1) doit être foireux, puisque je récupère un 1 et non le .
 
n'empeche que je comprends pas trop ton truc en fait :pt1cable:
 
edit : si en fait j'ai compris :jap: :D


Message édité par Loom the Gloom le 06-05-2003 à 17:28:54

---------------
Music|Market|Feed|Loom|DVD
n°384877
mareek
Et de 3 \o/
Posté le 06-05-2003 à 17:32:55  profilanswer
 

Loom the gloom a écrit :


 
ok je tente
le souci c'est que chez moi ça marche quoi que je fasse, je ne pourrais même pas te dire si ta sol est bonne !
 

MAIS ON S'EN FOUT !
Le problème c'est que ça marche pas sur l'autre poste et c'est pas en rajoutant des verifs sur les données que ça va moins bien marcher chez toi.
 
 :hello:


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°384881
mareek
Et de 3 \o/
Posté le 06-05-2003 à 17:34:13  profilanswer
 

Loom the gloom a écrit :

bon ton cstr(1.1) doit être foireux, puisque je récupère un 1 et non le .
 
n'empeche que je comprends pas trop ton truc en fait :pt1cable:
 
edit : si en fait j'ai compris :jap: :D


effectivement, je me suis gourré, il fallait remplacer par mid(cstr(1.1),2,1)


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°384897
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 17:38:18  profilanswer
 

mareek a écrit :

MAIS ON S'EN FOUT !
Le problème c'est que ça marche pas sur l'autre poste et c'est pas en rajoutant des verifs sur les données que ça va moins bien marcher chez toi.
 
 :hello:  


 
effectivement et c'est que je suis en train de faire
ta méthode a l'air de marcher pas mal
faudra que j'attende demain pour la tester en bas par contre
 
mais sinon, tu as une explication à ce problème ?


---------------
Music|Market|Feed|Loom|DVD
n°384904
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 17:40:07  profilanswer
 

mareek a écrit :


effectivement, je me suis gourré, il fallait remplacer par mid(cstr(1.1),2,1)


 
j'avais trouvé ;)
 
bon effectivement ta méthode me semble vraiment pas mal
 
 
en tout cas reste à voir si ça fonctionnera en bas, sachant que chez moi ça marchait déja
j'espère qu'il n'y aura rien d'autre qui gène !!


---------------
Music|Market|Feed|Loom|DVD
n°384910
mareek
Et de 3 \o/
Posté le 06-05-2003 à 17:41:46  profilanswer
 

Loom the gloom a écrit :


 
effectivement et c'est que je suis en train de faire
ta méthode a l'air de marcher pas mal
faudra que j'attende demain pour la tester en bas par contre
 
mais sinon, tu as une explication à ce problème ?

ben oui, VB se base sur les paramètres régionnaux pour les fonctions de converstion (cstr, cint, cdate, etc ...) et comme la virgule n'était pas le séparateur de décimale du PC, VB ne reocnnaissait pas le format de ton nombre.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°384918
Loom the G​loom
Even coders get the blues...
Posté le 06-05-2003 à 17:47:19  profilanswer
 

mareek a écrit :

ben oui, VB se base sur les paramètres régionnaux pour les fonctions de converstion (cstr, cint, cdate, etc ...) et comme la virgule n'était pas le séparateur de décimale du PC, VB ne reocnnaissait pas le format de ton nombre.  


 
ok, jusque là tout roule...
 
mais comme je te l'avais dis, lorsque je le change chez moi, ça marche toujours, et c'est là que je ne comprends plus...


---------------
Music|Market|Feed|Loom|DVD
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro VBA sous Excel

 

Sujets relatifs
SQL sous VBA : comparaison entre 1 chaîne et 1 valeur numériqueCopie de cellules avec [vb/excel]
macro excelExcel VS Access pour MySQL
formule matriciel dans excel help me please[VBA 97] état d'une "Case à cocher"
Caché des champs en VBAVBA -> access -> liste deroulante
[VBA?] macro et excel newbee inside[VBA & Excel] Ou trouver des exemples de macro??
Plus de sujets relatifs à : Macro VBA sous Excel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR