FORUM Tom's Hardware » Programmation » VB / VBA / VBS » [réglé] macro excel : je tourne en rond
 

[réglé] macro excel : je tourne en rond

Overclocking & Tuning : fifi2191 et 99 utilisateurs inconnus
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : [réglé] macro excel : je tourne en rond
 
Plus d'informations

Bonjour !
 
je tourne en rond depuis 3 heures pour trouver une solution, et je n'utilise que rarement les macros.
j'espère que quelqu'un pourra m'aider... en tout cas merci d'avance.
 
J'ai besoin de programmer une macro sous excel XP (2003).  
ce qu'elle doit pouvoir faire : dans une colonne remplie de numéros de téléphones sous la forme "33387454545" je souhaite retraiter la liste pour la transformer en "33.87.45.45.45".
 
bref, je galère en face d'un problème de noob. c'est agaçant.
j'ai beau surfer sur les sites à tutoriels, je ne trouve pas les solutions.
 
merci pour votre aide.
 
fred.


Message édité par defred le 18-07-2006 à 13:51:10

zeb
Profil : Modérateur libre
Plus d'informations

Le secret s'appelle Mid()

Plus d'informations

a écrit :

Le secret s'appelle Mid()


 
merci zeb, pour cette indication.
j'adoptais la mauvaise syntaxe pour rechercher dans l'aide, y'a pas à dire : quand on connais...
 
néanmoins je reste avec mon problème sur les bras, car je n'arrive pas à retranscrire les explications (ni l'exemple donné avec) dans le cadre de mon retraitement de chaîne de caractère.
 
le texte de l'aide :  
 

Citation :

STXT
 S'applique également à : MIDB
 
STXT renvoie un nombre donné de caractères extraits d'une chaîne de texte à partir de la position que vous avez spécifiée, en fonction du nombre de caractères spécifiés.
 
MIDB renvoie un nombre donné de caractères extraits d'une chaîne de texte à partir de la position que vous avez spécifiée, en fonction du nombre d'octets spécifiés. Cette fonction est utilisée avec des caractères codés sur deux octets.
 
Syntaxe
 
STXT(texte;no_départ;no_car)
 
MIDB(texte,no_départ,no_octets)
 
texte    représente la chaîne de texte contenant les caractères à extraire.
 
no_départ    représente la position dans le texte du premier caractère à extraire. Le premier caractère de texte a un no_départ égal à 1, et ainsi de suite.
 
no_car    indique le nombre de caractères à extraire du texte à l'aide de STXT.
 
no_octets    indique le nombre de caractères à extraire du texte à l'aide de MIDB, en octets.
 
Notes
 
Si no_départ est supérieur à la longueur de texte, STXT renvoie une chaîne vide ("" ).  
Si no_départ est inférieur à la longueur de texte, mais que no_départ plus no_car dépasse la longueur de texte, STXT renvoie tous les caractères jusqu'à la fin de texte.  
Si no_départ est inférieur à 1, STXT renvoie la valeur d'erreur #VALEUR!.  
Si no_car est négatif, STXT renvoie la valeur d'erreur #VALEUR!.
 
Si no_octets est négatif, MIDB renvoie la valeur d'erreur #VALEUR!.


 
 
finalement c'est peut être pas un problème de noob  :heink:


Message édité par defred le 18-07-2006 à 11:09:32
Plus d'informations

Je ne comprends pas pourquoi la formule personalisée de la forme
00\.00\.00\.00\.00
ne te conviendrait pas
tu fais ça  
tu enregistres ta macro
et basta
où est le problème ?

Plus d'informations

meecham a écrit :

Je ne comprends pas pourquoi la formule personalisée de la forme
00\.00\.00\.00\.00
ne te conviendrait pas
tu fais ça  
tu enregistres ta macro
et basta
où est le problème ?


 
 
quelle horreur !
j'ai voulu faire une usine à gaz alors qu'il suffisait de changer le format de la cellule.
quand je vous disais que c'était un problème de noob...
 
un grand merci à jeca  
 
maintenant, j'ai un peu honte...

zeb
Profil : Modérateur libre
Plus d'informations

Ah bah, il y a une différence entre afficher et transformer :o
 
La soluce de Jeca est très Excel, c'est ce que tu cherchais sans le Mid(  )savoir ! Tant mieux.
 
Mais tu postes dans la cat' programmation, alors voilà une soluce très Code :

Code :
  1. Mid(s, 1, 2) & "." & Mid(s, 3, 2) & "." & Mid(s, 5, 2) & "." & Mid(s, 7, 2) & "." & Mid(s, 9, 2)

Plus d'informations

désolé pour cette erreur.
 
cette solution "code" aboutit-elle exactement au même résultat ? c'est l'impression que ça donne en tout cas.  
mais dns ce cas, ou dois-je déclarer les variables (la colonne ou la formule s'appliquera) ?
et que signifie "s" dans ton exemple ?


Message édité par defred le 19-07-2006 à 09:55:02
zeb
Profil : Modérateur libre
Plus d'informations

Remarque de newbie, mais TRES bonne remarque.
s pour String, évidemment.
Donc :

Code :
  1. Dim s as String
  2. s = Cells( Ligne, Colonne ).Value
  3. Cells( Ligne, Colonne ).Value = Mid(s, 1, 2) & "." & Mid(s, 3, 2) & "." & Mid(s, 5, 2) & "." & Mid(s, 7, 2) & "." & Mid(s, 9, 2)

Plus d'informations

évidemment !  
(lol de neewbie)
 
je suis toujours dans mon retraitement de fichier, mais pour un autre processus.
Dans le même veine de question :
 
j'ai une serie de mots dans une colonne, séparés par des "-"
ça nous donne une cellule remplie comme ça :mot1-mot2-mot3
le nombre de mots est variable de 2 à 10
 
je dois ajouter, accolé à la fin de chaque dernier mot du bloc, une constante de type "-ville"
pour donner donc mot1-mot2-mot3-ville
 
s'agit-il d'une macro à progammer ?
et si oui, y a t il une solution simple ?
et si oui, j'aurai posté dans la bonne catégorie du forum !
 
merci !.


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » VB / VBA / VBS » [réglé] macro excel : je tourne en rond
 

Annonces Google
Publicité
Les ressources relatives