Action de Remplacer dans le bloc note depuis une macro excel...

Signaler
Messages postés
35
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
5 juin 2008
-
ScSami
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
-
Bonjour,

Est-il possible depuis une macro sous excel de faire un "remplacer" dans le bloc note, un fichier texte quoi? mon problème c'est que sous excel je ne sais ouvrir un fichier que par workbook.open et donc il me l'ouvre avec excel par défaut et non le bloc note?

Merci
Bonne prog...

3 réponses

Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
19
Shell ("notepad.exe ""C:\Mon Dossier\MonFichier.txt""")

A condition que NotePad.Exe (le bloc not) soit dans le dossier de ton Windows !!!
Sinon, ajoute devant (après l'apostrophe tout de même!) son chemin d'accès (path).
Et modifi celui du fichier texte à ouvrir.

Est-ce que cela répond à ta question ???

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
Messages postés
35
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
5 juin 2008

Ok, ça répond à une partie de ma question, ouvrir notepad, maintenant depuis la macro Excel, sais tu comment faire un "remplacer" dans le notepad???

Merci
Bonne prog...
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
19
Il y a bien une fonction en VB qui serait succeptible de pouvoir le faire... mais j'ai oublié son nom

Sinon, il y a aussi l'API "SendMessage" dont tu trouveras un paquet de sources et de post forum sur VBFrance.

Mais toute la question est : pouquoi remplacer à partir du note pad ???
Par ce que si ton but est uniquement de remplacer une chaine de caractère dans un fichier, rien de plus facile à faire... mais pas comme ça!!! Avec l'instruction "Open" !!!

Tout dépend donc de ce que tu cherches à modifier et de la structure de ton fichier.
Le plus simple étant d'utiliser les modes Input/Output. Le problème c'est que Output effacera tout le fichier avec d'écrire de nouvelles données. Il faudra donc préalablement l'ouvrir et le lire via le mode Input et l'instruction Input # et ainsi le mettre en mémoire (soit dans une variable, soit dans un tableau). Le mode Append permet de rajouter des données en fin de fichier sans qu'il efface le fichier à l'ouverture (comme Output) ! Mais pour rajouter des données au milieu, il vaut mieux lire le fichier avec Input, le mettre en mémoire, le modifier, puis l'enregistrer (via Output donc).
Sinon, il y a encore le mode Random qui est surtout utile si ton fichier est structuré sous forme d'enregistrements bien structurés.
Le mode Binary étant le plus souple mais le moins évident à manipuler au premier abords...

Par exemple, ce code permet de mettre en mémoire, dans une seule variable, tout ton fichier :

'Hyper important à déclarer sinon l'instruction Get # ne fonctionnera
'pas puisqu'elle ne la déclarera pas d'emblé!
Dim var
OctetsDuFichier As String 'Type chaîne de caractères, donc, texte
'(suite d'octets [représentés par des caractères ASCII... Cf. l'aide de ton VB pour plus d'infos!]).
...
varCheminFichier = "C:\Mon Dossier\Mon Fichier.ext"
varCanalFichier = FreeFile
Open varCheminFichier For Binary As varCanalFichier
'Réserve en mémoire le nombre d'octets (des espaces, tout simplement!)
'que contient le fichier (sa taille... en octet donc! [LOF(varCanalFichier] )
varOctetsDuFichier = Space(LOF(varCanalFichier))
'Récupère tous les octets du fichier (tout le fichier donc) d'un coup
'et les placent (les octets, les caractères donc) dans cette variable
'de manière linéaire (les retours à la lignes étant également des caractères ASCII [cf. CR/LF CHR(10) & CHR(13)]
Get #varCanalFichier, 1, varOctetsDuFichier '1 étant le début de la lecture... le 1er octet
Close varCanalFichier

Ainsi, tout ton fichier se trouve dans la variable "varOctetsDuFichier".
Tu peux donc maintenant la manipuler avec les fonctions de manipulation du texte...
Là, je te laisse te référer à, entre autre :

- & (concatène deux chaines... [les met bout-à-bout si tu préfères... un peu comme "+"])


- Mid$ (et Left$ et Right$ leurs petites soeurs) [extraction d'une portion de texte selon le début et la taille à "exporter"],

- InStr/InStrRev (rechercher une chaine dans une autre [rechercher un texte quoi!])


- Replace (remplacer),
- Split (découper et mettre dans un tableau)
- ...

D'autres questions ???

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )