Bonjour,
Dans un classeur Excel, je liste en colonne C tous les classeurs contenus
dans un dossier, et je voudrais faire une macro pour modifier dans tous
les fichiers texte (1000 env.) de type doc*.inc (ils s'ouvrent avec le
bloc-note), 2 caractères sur la ligne 2 (sans toucher aux autres lignes) .
Il s'agit de remplacer un "ne" par "bl", ou autre cas, de un "ra" par "rb"
Ces fichiers blocs-notes ont une quinzaine de lignes et les 2 1ère ligne
toujours les mêmes, soit :
<?
$type = "ne";
, sauf les 2 caractères entre"" qui peuvent varier, mais toujours au
nombre de 2
J'ai essayé avec l'aide en ligne de Excel de récupérer ces données de type
String dans une variable, mais j'ai une erreur d'exécution N°62 :
"l'entrée dépasse la fin du fichier" avec le programme suivant :
Dim MyChar, MyChars, mon_fichier As String
mon_fichier = [C1]
MyChars = ""
Open mon_fichier For Input As #1 ' Ouvre le fichier.
Do While Not EOF(1)
MyChar = Input(1, #1)
MyChars = MyChar & CStr(Input(1, #1))
' Debug.Print MyChar Loop
MsgBox MyChars
Close #1
Dans l'exemple du guide VBA excel, la ligne initiale "Debug.Print MyChar
Loop" affiche bien tous les caractères dans la fenètre d'exécution...mais
je n'arrive pas à récupérer dans une variable string les caractères...
L'idée étant après, avec les fonctions left et right faire la correction
voulue, de le coller dans un nouveau fichier texte que j'aurais
réenregistré sous le nom initial avec un DisplayAlerts= False ...
C'est un peu compliqué, et ce que je sais en vba atteint vite les limites!
Cela vous semble-t-il faisable par Excel, bien que cela ne soit pas la
vocation initiale du vba sous excel.
Merci
Pour exemple, voici un fichier standard à traiter :
<?
$type = "ne";
$fileid = "1744";
$status = "a";
$creadate = "200807171412";
$moddate = "200807211820";
$author = stripslashes("Toto");
$email = stripslashes("");
$fielda1 = stripslashes("");
$fielda2 = stripslashes("");
$fieldb1 = stripslashes("10 jours à Paris");
$fieldb2 = stripslashes("");
$fieldc1 = stripslashes("Super voyage <br /><br /><embed
id="VideoPlayback" style="width:500px;height:406px"
allowFullScreen="true"
src="http://video.google.com/googleplayer......=fr&fs=true"
type="application/x-shockwave-flash"> </embed>");
$fieldc2 = stripslashes("");
$fieldd1 = stripslashes("");
$fieldd2 = stripslashes("");
$fieldweb = stripslashes("");
$fieldmail = stripslashes("");
?>
Bonjour,
Dans un classeur Excel, je liste en colonne C tous les classeurs contenus
dans un dossier, et je voudrais faire une macro pour modifier dans tous
les fichiers texte (1000 env.) de type doc*.inc (ils s'ouvrent avec le
bloc-note), 2 caractères sur la ligne 2 (sans toucher aux autres lignes) .
Il s'agit de remplacer un "ne" par "bl", ou autre cas, de un "ra" par "rb"
Ces fichiers blocs-notes ont une quinzaine de lignes et les 2 1ère ligne
toujours les mêmes, soit :
<?
$type = "ne";
, sauf les 2 caractères entre"" qui peuvent varier, mais toujours au
nombre de 2
J'ai essayé avec l'aide en ligne de Excel de récupérer ces données de type
String dans une variable, mais j'ai une erreur d'exécution N°62 :
"l'entrée dépasse la fin du fichier" avec le programme suivant :
Dim MyChar, MyChars, mon_fichier As String
mon_fichier = [C1]
MyChars = ""
Open mon_fichier For Input As #1 ' Ouvre le fichier.
Do While Not EOF(1)
MyChar = Input(1, #1)
MyChars = MyChar & CStr(Input(1, #1))
' Debug.Print MyChar Loop
MsgBox MyChars
Close #1
Dans l'exemple du guide VBA excel, la ligne initiale "Debug.Print MyChar
Loop" affiche bien tous les caractères dans la fenètre d'exécution...mais
je n'arrive pas à récupérer dans une variable string les caractères...
L'idée étant après, avec les fonctions left et right faire la correction
voulue, de le coller dans un nouveau fichier texte que j'aurais
réenregistré sous le nom initial avec un DisplayAlerts= False ...
C'est un peu compliqué, et ce que je sais en vba atteint vite les limites!
Cela vous semble-t-il faisable par Excel, bien que cela ne soit pas la
vocation initiale du vba sous excel.
Merci
Pour exemple, voici un fichier standard à traiter :
<?
$type = "ne";
$fileid = "1744";
$status = "a";
$creadate = "200807171412";
$moddate = "200807211820";
$author = stripslashes("Toto");
$email = stripslashes("jean.toto@orange.fr");
$fielda1 = stripslashes("");
$fielda2 = stripslashes("");
$fieldb1 = stripslashes("10 jours à Paris");
$fieldb2 = stripslashes("");
$fieldc1 = stripslashes("Super voyage <br /><br /><embed
id="VideoPlayback" style="width:500px;height:406px"
allowFullScreen="true"
src="http://video.google.com/googleplayer......=fr&fs=true"
type="application/x-shockwave-flash"> </embed>");
$fieldc2 = stripslashes("");
$fieldd1 = stripslashes("");
$fieldd2 = stripslashes("");
$fieldweb = stripslashes("");
$fieldmail = stripslashes("");
?>
Bonjour,
Dans un classeur Excel, je liste en colonne C tous les classeurs contenus
dans un dossier, et je voudrais faire une macro pour modifier dans tous
les fichiers texte (1000 env.) de type doc*.inc (ils s'ouvrent avec le
bloc-note), 2 caractères sur la ligne 2 (sans toucher aux autres lignes) .
Il s'agit de remplacer un "ne" par "bl", ou autre cas, de un "ra" par "rb"
Ces fichiers blocs-notes ont une quinzaine de lignes et les 2 1ère ligne
toujours les mêmes, soit :
<?
$type = "ne";
, sauf les 2 caractères entre"" qui peuvent varier, mais toujours au
nombre de 2
J'ai essayé avec l'aide en ligne de Excel de récupérer ces données de type
String dans une variable, mais j'ai une erreur d'exécution N°62 :
"l'entrée dépasse la fin du fichier" avec le programme suivant :
Dim MyChar, MyChars, mon_fichier As String
mon_fichier = [C1]
MyChars = ""
Open mon_fichier For Input As #1 ' Ouvre le fichier.
Do While Not EOF(1)
MyChar = Input(1, #1)
MyChars = MyChar & CStr(Input(1, #1))
' Debug.Print MyChar Loop
MsgBox MyChars
Close #1
Dans l'exemple du guide VBA excel, la ligne initiale "Debug.Print MyChar
Loop" affiche bien tous les caractères dans la fenètre d'exécution...mais
je n'arrive pas à récupérer dans une variable string les caractères...
L'idée étant après, avec les fonctions left et right faire la correction
voulue, de le coller dans un nouveau fichier texte que j'aurais
réenregistré sous le nom initial avec un DisplayAlerts= False ...
C'est un peu compliqué, et ce que je sais en vba atteint vite les limites!
Cela vous semble-t-il faisable par Excel, bien que cela ne soit pas la
vocation initiale du vba sous excel.
Merci
Pour exemple, voici un fichier standard à traiter :
<?
$type = "ne";
$fileid = "1744";
$status = "a";
$creadate = "200807171412";
$moddate = "200807211820";
$author = stripslashes("Toto");
$email = stripslashes("");
$fielda1 = stripslashes("");
$fielda2 = stripslashes("");
$fieldb1 = stripslashes("10 jours à Paris");
$fieldb2 = stripslashes("");
$fieldc1 = stripslashes("Super voyage <br /><br /><embed
id="VideoPlayback" style="width:500px;height:406px"
allowFullScreen="true"
src="http://video.google.com/googleplayer......=fr&fs=true"
type="application/x-shockwave-flash"> </embed>");
$fieldc2 = stripslashes("");
$fieldd1 = stripslashes("");
$fieldd2 = stripslashes("");
$fieldweb = stripslashes("");
$fieldmail = stripslashes("");
?>
Bonsoir Trèfle,
Teste d'abords sur deux ou trois fichiers pour voir si tu as le résultat
escompté. Lance la proc "EffectuerModif", j'ai commenté le code pour plus
de compréhension :
Sub EffectuerModif()
Dim I As Integer
Dim Der As Integer
'recherche la dernière ligne
Der = [C65536].End(xlUp).Row
'parcour toutes les lignes de la colonne C
For I = 1 To Der
LireEtModifierFichierTexte Range("C" & I).Value, "bl"
Next I
End Sub
Sub LireEtModifierFichierTexte(Fichier As String, Lettre As String)
Dim Tbl() As String
Dim Index As Integer
Dim I As Integer
'récupère un index libre
Index = FreeFile
'ouvre le fichier en lecture
Open Fichier For Input As #Index
'parcour tout le fichier et
'stocke les lignes dans un tableau
Do While Not EOF(Index)
I = I + 1
ReDim Preserve Tbl(1 To I)
Input #Index, Tbl(I)
Loop
'ferme le ficher en lecture
Close #Index
'et l'ouvre en écriture
Open Fichier For Output As #Index
'effectue la modif dans le tableau
'à la 2ème ligne
Tbl(2) = "$type = """ & Lettre & """"
'réinscrit le tout dans le fichier
For I = 1 To UBound(Tbl)
Print #Index, Tbl(I)
Next I
'ferme le ficher en écriture
Close #Index
Erase Tbl
End Sub
Hervé.
"Trèfle" a écrit dans le message de
news:%23$Bonjour,
Dans un classeur Excel, je liste en colonne C tous les classeurs contenus
dans un dossier, et je voudrais faire une macro pour modifier dans tous
les fichiers texte (1000 env.) de type doc*.inc (ils s'ouvrent avec le
bloc-note), 2 caractères sur la ligne 2 (sans toucher aux autres lignes)
.
Il s'agit de remplacer un "ne" par "bl", ou autre cas, de un "ra" par
"rb"
Ces fichiers blocs-notes ont une quinzaine de lignes et les 2 1ère ligne
toujours les mêmes, soit :
<?
$type = "ne";
, sauf les 2 caractères entre"" qui peuvent varier, mais toujours au
nombre de 2
J'ai essayé avec l'aide en ligne de Excel de récupérer ces données de
type String dans une variable, mais j'ai une erreur d'exécution N°62 :
"l'entrée dépasse la fin du fichier" avec le programme suivant :
Dim MyChar, MyChars, mon_fichier As String
mon_fichier = [C1]
MyChars = ""
Open mon_fichier For Input As #1 ' Ouvre le fichier.
Do While Not EOF(1)
MyChar = Input(1, #1)
MyChars = MyChar & CStr(Input(1, #1))
' Debug.Print MyChar Loop
MsgBox MyChars
Close #1
Dans l'exemple du guide VBA excel, la ligne initiale "Debug.Print MyChar
Loop" affiche bien tous les caractères dans la fenètre d'exécution...mais
je n'arrive pas à récupérer dans une variable string les caractères...
L'idée étant après, avec les fonctions left et right faire la correction
voulue, de le coller dans un nouveau fichier texte que j'aurais
réenregistré sous le nom initial avec un DisplayAlerts= False ...
C'est un peu compliqué, et ce que je sais en vba atteint vite les
limites! Cela vous semble-t-il faisable par Excel, bien que cela ne soit
pas la vocation initiale du vba sous excel.
Merci
Pour exemple, voici un fichier standard à traiter :
<?
$type = "ne";
$fileid = "1744";
$status = "a";
$creadate = "200807171412";
$moddate = "200807211820";
$author = stripslashes("Toto");
$email = stripslashes("");
$fielda1 = stripslashes("");
$fielda2 = stripslashes("");
$fieldb1 = stripslashes("10 jours à Paris");
$fieldb2 = stripslashes("");
$fieldc1 = stripslashes("Super voyage <br /><br /><embed
id="VideoPlayback" style="width:500px;height:406px"
allowFullScreen="true"
src="http://video.google.com/googleplayer......=fr&fs=true"
type="application/x-shockwave-flash"> </embed>");
$fieldc2 = stripslashes("");
$fieldd1 = stripslashes("");
$fieldd2 = stripslashes("");
$fieldweb = stripslashes("");
$fieldmail = stripslashes("");
?>
Bonsoir Trèfle,
Teste d'abords sur deux ou trois fichiers pour voir si tu as le résultat
escompté. Lance la proc "EffectuerModif", j'ai commenté le code pour plus
de compréhension :
Sub EffectuerModif()
Dim I As Integer
Dim Der As Integer
'recherche la dernière ligne
Der = [C65536].End(xlUp).Row
'parcour toutes les lignes de la colonne C
For I = 1 To Der
LireEtModifierFichierTexte Range("C" & I).Value, "bl"
Next I
End Sub
Sub LireEtModifierFichierTexte(Fichier As String, Lettre As String)
Dim Tbl() As String
Dim Index As Integer
Dim I As Integer
'récupère un index libre
Index = FreeFile
'ouvre le fichier en lecture
Open Fichier For Input As #Index
'parcour tout le fichier et
'stocke les lignes dans un tableau
Do While Not EOF(Index)
I = I + 1
ReDim Preserve Tbl(1 To I)
Input #Index, Tbl(I)
Loop
'ferme le ficher en lecture
Close #Index
'et l'ouvre en écriture
Open Fichier For Output As #Index
'effectue la modif dans le tableau
'à la 2ème ligne
Tbl(2) = "$type = """ & Lettre & """"
'réinscrit le tout dans le fichier
For I = 1 To UBound(Tbl)
Print #Index, Tbl(I)
Next I
'ferme le ficher en écriture
Close #Index
Erase Tbl
End Sub
Hervé.
"Trèfle" <nospam@nospam.fr> a écrit dans le message de
news:%23$kWFk4kJHA.4448@TK2MSFTNGP05.phx.gbl...
Bonjour,
Dans un classeur Excel, je liste en colonne C tous les classeurs contenus
dans un dossier, et je voudrais faire une macro pour modifier dans tous
les fichiers texte (1000 env.) de type doc*.inc (ils s'ouvrent avec le
bloc-note), 2 caractères sur la ligne 2 (sans toucher aux autres lignes)
.
Il s'agit de remplacer un "ne" par "bl", ou autre cas, de un "ra" par
"rb"
Ces fichiers blocs-notes ont une quinzaine de lignes et les 2 1ère ligne
toujours les mêmes, soit :
<?
$type = "ne";
, sauf les 2 caractères entre"" qui peuvent varier, mais toujours au
nombre de 2
J'ai essayé avec l'aide en ligne de Excel de récupérer ces données de
type String dans une variable, mais j'ai une erreur d'exécution N°62 :
"l'entrée dépasse la fin du fichier" avec le programme suivant :
Dim MyChar, MyChars, mon_fichier As String
mon_fichier = [C1]
MyChars = ""
Open mon_fichier For Input As #1 ' Ouvre le fichier.
Do While Not EOF(1)
MyChar = Input(1, #1)
MyChars = MyChar & CStr(Input(1, #1))
' Debug.Print MyChar Loop
MsgBox MyChars
Close #1
Dans l'exemple du guide VBA excel, la ligne initiale "Debug.Print MyChar
Loop" affiche bien tous les caractères dans la fenètre d'exécution...mais
je n'arrive pas à récupérer dans une variable string les caractères...
L'idée étant après, avec les fonctions left et right faire la correction
voulue, de le coller dans un nouveau fichier texte que j'aurais
réenregistré sous le nom initial avec un DisplayAlerts= False ...
C'est un peu compliqué, et ce que je sais en vba atteint vite les
limites! Cela vous semble-t-il faisable par Excel, bien que cela ne soit
pas la vocation initiale du vba sous excel.
Merci
Pour exemple, voici un fichier standard à traiter :
<?
$type = "ne";
$fileid = "1744";
$status = "a";
$creadate = "200807171412";
$moddate = "200807211820";
$author = stripslashes("Toto");
$email = stripslashes("jean.toto@orange.fr");
$fielda1 = stripslashes("");
$fielda2 = stripslashes("");
$fieldb1 = stripslashes("10 jours à Paris");
$fieldb2 = stripslashes("");
$fieldc1 = stripslashes("Super voyage <br /><br /><embed
id="VideoPlayback" style="width:500px;height:406px"
allowFullScreen="true"
src="http://video.google.com/googleplayer......=fr&fs=true"
type="application/x-shockwave-flash"> </embed>");
$fieldc2 = stripslashes("");
$fieldd1 = stripslashes("");
$fieldd2 = stripslashes("");
$fieldweb = stripslashes("");
$fieldmail = stripslashes("");
?>
Bonsoir Trèfle,
Teste d'abords sur deux ou trois fichiers pour voir si tu as le résultat
escompté. Lance la proc "EffectuerModif", j'ai commenté le code pour plus
de compréhension :
Sub EffectuerModif()
Dim I As Integer
Dim Der As Integer
'recherche la dernière ligne
Der = [C65536].End(xlUp).Row
'parcour toutes les lignes de la colonne C
For I = 1 To Der
LireEtModifierFichierTexte Range("C" & I).Value, "bl"
Next I
End Sub
Sub LireEtModifierFichierTexte(Fichier As String, Lettre As String)
Dim Tbl() As String
Dim Index As Integer
Dim I As Integer
'récupère un index libre
Index = FreeFile
'ouvre le fichier en lecture
Open Fichier For Input As #Index
'parcour tout le fichier et
'stocke les lignes dans un tableau
Do While Not EOF(Index)
I = I + 1
ReDim Preserve Tbl(1 To I)
Input #Index, Tbl(I)
Loop
'ferme le ficher en lecture
Close #Index
'et l'ouvre en écriture
Open Fichier For Output As #Index
'effectue la modif dans le tableau
'à la 2ème ligne
Tbl(2) = "$type = """ & Lettre & """"
'réinscrit le tout dans le fichier
For I = 1 To UBound(Tbl)
Print #Index, Tbl(I)
Next I
'ferme le ficher en écriture
Close #Index
Erase Tbl
End Sub
Hervé.
"Trèfle" a écrit dans le message de
news:%23$Bonjour,
Dans un classeur Excel, je liste en colonne C tous les classeurs contenus
dans un dossier, et je voudrais faire une macro pour modifier dans tous
les fichiers texte (1000 env.) de type doc*.inc (ils s'ouvrent avec le
bloc-note), 2 caractères sur la ligne 2 (sans toucher aux autres lignes)
.
Il s'agit de remplacer un "ne" par "bl", ou autre cas, de un "ra" par
"rb"
Ces fichiers blocs-notes ont une quinzaine de lignes et les 2 1ère ligne
toujours les mêmes, soit :
<?
$type = "ne";
, sauf les 2 caractères entre"" qui peuvent varier, mais toujours au
nombre de 2
J'ai essayé avec l'aide en ligne de Excel de récupérer ces données de
type String dans une variable, mais j'ai une erreur d'exécution N°62 :
"l'entrée dépasse la fin du fichier" avec le programme suivant :
Dim MyChar, MyChars, mon_fichier As String
mon_fichier = [C1]
MyChars = ""
Open mon_fichier For Input As #1 ' Ouvre le fichier.
Do While Not EOF(1)
MyChar = Input(1, #1)
MyChars = MyChar & CStr(Input(1, #1))
' Debug.Print MyChar Loop
MsgBox MyChars
Close #1
Dans l'exemple du guide VBA excel, la ligne initiale "Debug.Print MyChar
Loop" affiche bien tous les caractères dans la fenètre d'exécution...mais
je n'arrive pas à récupérer dans une variable string les caractères...
L'idée étant après, avec les fonctions left et right faire la correction
voulue, de le coller dans un nouveau fichier texte que j'aurais
réenregistré sous le nom initial avec un DisplayAlerts= False ...
C'est un peu compliqué, et ce que je sais en vba atteint vite les
limites! Cela vous semble-t-il faisable par Excel, bien que cela ne soit
pas la vocation initiale du vba sous excel.
Merci
Pour exemple, voici un fichier standard à traiter :
<?
$type = "ne";
$fileid = "1744";
$status = "a";
$creadate = "200807171412";
$moddate = "200807211820";
$author = stripslashes("Toto");
$email = stripslashes("");
$fielda1 = stripslashes("");
$fielda2 = stripslashes("");
$fieldb1 = stripslashes("10 jours à Paris");
$fieldb2 = stripslashes("");
$fieldc1 = stripslashes("Super voyage <br /><br /><embed
id="VideoPlayback" style="width:500px;height:406px"
allowFullScreen="true"
src="http://video.google.com/googleplayer......=fr&fs=true"
type="application/x-shockwave-flash"> </embed>");
$fieldc2 = stripslashes("");
$fieldd1 = stripslashes("");
$fieldd2 = stripslashes("");
$fieldweb = stripslashes("");
$fieldmail = stripslashes("");
?>
Bonsoir Trèfle,
Teste d'abords sur deux ou trois fichiers pour voir si tu as le résultat
escompté. Lance la proc "EffectuerModif", j'ai commenté le code pour
plus de compréhension :
Sub EffectuerModif()
Dim I As Integer
Dim Der As Integer
'recherche la dernière ligne
Der = [C65536].End(xlUp).Row
'parcour toutes les lignes de la colonne C
For I = 1 To Der
LireEtModifierFichierTexte Range("C" & I).Value, "bl"
Next I
End Sub
Sub LireEtModifierFichierTexte(Fichier As String, Lettre As String)
Dim Tbl() As String
Dim Index As Integer
Dim I As Integer
'récupère un index libre
Index = FreeFile
'ouvre le fichier en lecture
Open Fichier For Input As #Index
'parcour tout le fichier et
'stocke les lignes dans un tableau
Do While Not EOF(Index)
I = I + 1
ReDim Preserve Tbl(1 To I)
Input #Index, Tbl(I)
Loop
'ferme le ficher en lecture
Close #Index
'et l'ouvre en écriture
Open Fichier For Output As #Index
'effectue la modif dans le tableau
'à la 2ème ligne
Tbl(2) = "$type = """ & Lettre & """"
'réinscrit le tout dans le fichier
For I = 1 To UBound(Tbl)
Print #Index, Tbl(I)
Next I
'ferme le ficher en écriture
Close #Index
Erase Tbl
End Sub
Hervé.
"Trèfle" a écrit dans le message de
news:%23$Bonjour,
Dans un classeur Excel, je liste en colonne C tous les classeurs
contenus dans un dossier, et je voudrais faire une macro pour modifier
dans tous les fichiers texte (1000 env.) de type doc*.inc (ils
s'ouvrent avec le bloc-note), 2 caractères sur la ligne 2 (sans
toucher aux autres lignes) .
Il s'agit de remplacer un "ne" par "bl", ou autre cas, de un "ra" par
"rb"
Ces fichiers blocs-notes ont une quinzaine de lignes et les 2 1ère
ligne toujours les mêmes, soit :
<?
$type = "ne";
, sauf les 2 caractères entre"" qui peuvent varier, mais toujours au
nombre de 2
J'ai essayé avec l'aide en ligne de Excel de récupérer ces données de
type String dans une variable, mais j'ai une erreur d'exécution N°62 :
"l'entrée dépasse la fin du fichier" avec le programme suivant :
Dim MyChar, MyChars, mon_fichier As String
mon_fichier = [C1]
MyChars = ""
Open mon_fichier For Input As #1 ' Ouvre le fichier.
Do While Not EOF(1)
MyChar = Input(1, #1)
MyChars = MyChar & CStr(Input(1, #1))
' Debug.Print MyChar Loop
MsgBox MyChars
Close #1
Dans l'exemple du guide VBA excel, la ligne initiale "Debug.Print
MyChar Loop" affiche bien tous les caractères dans la fenètre
d'exécution...mais je n'arrive pas à récupérer dans une variable
string les caractères...
L'idée étant après, avec les fonctions left et right faire la
correction voulue, de le coller dans un nouveau fichier texte que
j'aurais réenregistré sous le nom initial avec un DisplayAlerts= False
...
C'est un peu compliqué, et ce que je sais en vba atteint vite les
limites! Cela vous semble-t-il faisable par Excel, bien que cela ne
soit pas la vocation initiale du vba sous excel.
Merci
Pour exemple, voici un fichier standard à traiter :
<?
$type = "ne";
$fileid = "1744";
$status = "a";
$creadate = "200807171412";
$moddate = "200807211820";
$author = stripslashes("Toto");
$email = stripslashes("");
$fielda1 = stripslashes("");
$fielda2 = stripslashes("");
$fieldb1 = stripslashes("10 jours à Paris");
$fieldb2 = stripslashes("");
$fieldc1 = stripslashes("Super voyage <br /><br /><embed
id="VideoPlayback" style="width:500px;height:406px"
allowFullScreen="true"
src="http://video.google.com/googleplayer......=fr&fs=true"
type="application/x-shockwave-flash"> </embed>");
$fieldc2 = stripslashes("");
$fieldd1 = stripslashes("");
$fieldd2 = stripslashes("");
$fieldweb = stripslashes("");
$fieldmail = stripslashes("");
?>
Bonsoir Trèfle,
Teste d'abords sur deux ou trois fichiers pour voir si tu as le résultat
escompté. Lance la proc "EffectuerModif", j'ai commenté le code pour
plus de compréhension :
Sub EffectuerModif()
Dim I As Integer
Dim Der As Integer
'recherche la dernière ligne
Der = [C65536].End(xlUp).Row
'parcour toutes les lignes de la colonne C
For I = 1 To Der
LireEtModifierFichierTexte Range("C" & I).Value, "bl"
Next I
End Sub
Sub LireEtModifierFichierTexte(Fichier As String, Lettre As String)
Dim Tbl() As String
Dim Index As Integer
Dim I As Integer
'récupère un index libre
Index = FreeFile
'ouvre le fichier en lecture
Open Fichier For Input As #Index
'parcour tout le fichier et
'stocke les lignes dans un tableau
Do While Not EOF(Index)
I = I + 1
ReDim Preserve Tbl(1 To I)
Input #Index, Tbl(I)
Loop
'ferme le ficher en lecture
Close #Index
'et l'ouvre en écriture
Open Fichier For Output As #Index
'effectue la modif dans le tableau
'à la 2ème ligne
Tbl(2) = "$type = """ & Lettre & """"
'réinscrit le tout dans le fichier
For I = 1 To UBound(Tbl)
Print #Index, Tbl(I)
Next I
'ferme le ficher en écriture
Close #Index
Erase Tbl
End Sub
Hervé.
"Trèfle" <nospam@nospam.fr> a écrit dans le message de
news:%23$kWFk4kJHA.4448@TK2MSFTNGP05.phx.gbl...
Bonjour,
Dans un classeur Excel, je liste en colonne C tous les classeurs
contenus dans un dossier, et je voudrais faire une macro pour modifier
dans tous les fichiers texte (1000 env.) de type doc*.inc (ils
s'ouvrent avec le bloc-note), 2 caractères sur la ligne 2 (sans
toucher aux autres lignes) .
Il s'agit de remplacer un "ne" par "bl", ou autre cas, de un "ra" par
"rb"
Ces fichiers blocs-notes ont une quinzaine de lignes et les 2 1ère
ligne toujours les mêmes, soit :
<?
$type = "ne";
, sauf les 2 caractères entre"" qui peuvent varier, mais toujours au
nombre de 2
J'ai essayé avec l'aide en ligne de Excel de récupérer ces données de
type String dans une variable, mais j'ai une erreur d'exécution N°62 :
"l'entrée dépasse la fin du fichier" avec le programme suivant :
Dim MyChar, MyChars, mon_fichier As String
mon_fichier = [C1]
MyChars = ""
Open mon_fichier For Input As #1 ' Ouvre le fichier.
Do While Not EOF(1)
MyChar = Input(1, #1)
MyChars = MyChar & CStr(Input(1, #1))
' Debug.Print MyChar Loop
MsgBox MyChars
Close #1
Dans l'exemple du guide VBA excel, la ligne initiale "Debug.Print
MyChar Loop" affiche bien tous les caractères dans la fenètre
d'exécution...mais je n'arrive pas à récupérer dans une variable
string les caractères...
L'idée étant après, avec les fonctions left et right faire la
correction voulue, de le coller dans un nouveau fichier texte que
j'aurais réenregistré sous le nom initial avec un DisplayAlerts= False
...
C'est un peu compliqué, et ce que je sais en vba atteint vite les
limites! Cela vous semble-t-il faisable par Excel, bien que cela ne
soit pas la vocation initiale du vba sous excel.
Merci
Pour exemple, voici un fichier standard à traiter :
<?
$type = "ne";
$fileid = "1744";
$status = "a";
$creadate = "200807171412";
$moddate = "200807211820";
$author = stripslashes("Toto");
$email = stripslashes("jean.toto@orange.fr");
$fielda1 = stripslashes("");
$fielda2 = stripslashes("");
$fieldb1 = stripslashes("10 jours à Paris");
$fieldb2 = stripslashes("");
$fieldc1 = stripslashes("Super voyage <br /><br /><embed
id="VideoPlayback" style="width:500px;height:406px"
allowFullScreen="true"
src="http://video.google.com/googleplayer......=fr&fs=true"
type="application/x-shockwave-flash"> </embed>");
$fieldc2 = stripslashes("");
$fieldd1 = stripslashes("");
$fieldd2 = stripslashes("");
$fieldweb = stripslashes("");
$fieldmail = stripslashes("");
?>
Bonsoir Trèfle,
Teste d'abords sur deux ou trois fichiers pour voir si tu as le résultat
escompté. Lance la proc "EffectuerModif", j'ai commenté le code pour
plus de compréhension :
Sub EffectuerModif()
Dim I As Integer
Dim Der As Integer
'recherche la dernière ligne
Der = [C65536].End(xlUp).Row
'parcour toutes les lignes de la colonne C
For I = 1 To Der
LireEtModifierFichierTexte Range("C" & I).Value, "bl"
Next I
End Sub
Sub LireEtModifierFichierTexte(Fichier As String, Lettre As String)
Dim Tbl() As String
Dim Index As Integer
Dim I As Integer
'récupère un index libre
Index = FreeFile
'ouvre le fichier en lecture
Open Fichier For Input As #Index
'parcour tout le fichier et
'stocke les lignes dans un tableau
Do While Not EOF(Index)
I = I + 1
ReDim Preserve Tbl(1 To I)
Input #Index, Tbl(I)
Loop
'ferme le ficher en lecture
Close #Index
'et l'ouvre en écriture
Open Fichier For Output As #Index
'effectue la modif dans le tableau
'à la 2ème ligne
Tbl(2) = "$type = """ & Lettre & """"
'réinscrit le tout dans le fichier
For I = 1 To UBound(Tbl)
Print #Index, Tbl(I)
Next I
'ferme le ficher en écriture
Close #Index
Erase Tbl
End Sub
Hervé.
"Trèfle" a écrit dans le message de
news:%23$Bonjour,
Dans un classeur Excel, je liste en colonne C tous les classeurs
contenus dans un dossier, et je voudrais faire une macro pour modifier
dans tous les fichiers texte (1000 env.) de type doc*.inc (ils
s'ouvrent avec le bloc-note), 2 caractères sur la ligne 2 (sans
toucher aux autres lignes) .
Il s'agit de remplacer un "ne" par "bl", ou autre cas, de un "ra" par
"rb"
Ces fichiers blocs-notes ont une quinzaine de lignes et les 2 1ère
ligne toujours les mêmes, soit :
<?
$type = "ne";
, sauf les 2 caractères entre"" qui peuvent varier, mais toujours au
nombre de 2
J'ai essayé avec l'aide en ligne de Excel de récupérer ces données de
type String dans une variable, mais j'ai une erreur d'exécution N°62 :
"l'entrée dépasse la fin du fichier" avec le programme suivant :
Dim MyChar, MyChars, mon_fichier As String
mon_fichier = [C1]
MyChars = ""
Open mon_fichier For Input As #1 ' Ouvre le fichier.
Do While Not EOF(1)
MyChar = Input(1, #1)
MyChars = MyChar & CStr(Input(1, #1))
' Debug.Print MyChar Loop
MsgBox MyChars
Close #1
Dans l'exemple du guide VBA excel, la ligne initiale "Debug.Print
MyChar Loop" affiche bien tous les caractères dans la fenètre
d'exécution...mais je n'arrive pas à récupérer dans une variable
string les caractères...
L'idée étant après, avec les fonctions left et right faire la
correction voulue, de le coller dans un nouveau fichier texte que
j'aurais réenregistré sous le nom initial avec un DisplayAlerts= False
...
C'est un peu compliqué, et ce que je sais en vba atteint vite les
limites! Cela vous semble-t-il faisable par Excel, bien que cela ne
soit pas la vocation initiale du vba sous excel.
Merci
Pour exemple, voici un fichier standard à traiter :
<?
$type = "ne";
$fileid = "1744";
$status = "a";
$creadate = "200807171412";
$moddate = "200807211820";
$author = stripslashes("Toto");
$email = stripslashes("");
$fielda1 = stripslashes("");
$fielda2 = stripslashes("");
$fieldb1 = stripslashes("10 jours à Paris");
$fieldb2 = stripslashes("");
$fieldc1 = stripslashes("Super voyage <br /><br /><embed
id="VideoPlayback" style="width:500px;height:406px"
allowFullScreen="true"
src="http://video.google.com/googleplayer......=fr&fs=true"
type="application/x-shockwave-flash"> </embed>");
$fieldc2 = stripslashes("");
$fieldd1 = stripslashes("");
$fieldd2 = stripslashes("");
$fieldweb = stripslashes("");
$fieldmail = stripslashes("");
?>
Bonsoir Trèfle,
Teste d'abords sur deux ou trois fichiers pour voir si tu as le résultat
escompté. Lance la proc "EffectuerModif", j'ai commenté le code pour plus
de compréhension :
Sub EffectuerModif()
Dim I As Integer
Dim Der As Integer
'recherche la dernière ligne
Der = [C65536].End(xlUp).Row
'parcour toutes les lignes de la colonne C
For I = 1 To Der
LireEtModifierFichierTexte Range("C" & I).Value, "bl"
Next I
End Sub
Sub LireEtModifierFichierTexte(Fichier As String, Lettre As String)
Dim Tbl() As String
Dim Index As Integer
Dim I As Integer
'récupère un index libre
Index = FreeFile
'ouvre le fichier en lecture
Open Fichier For Input As #Index
'parcour tout le fichier et
'stocke les lignes dans un tableau
Do While Not EOF(Index)
I = I + 1
ReDim Preserve Tbl(1 To I)
Input #Index, Tbl(I)
Loop
'ferme le ficher en lecture
Close #Index
'et l'ouvre en écriture
Open Fichier For Output As #Index
'effectue la modif dans le tableau
'à la 2ème ligne
Tbl(2) = "$type = """ & Lettre & """"
'réinscrit le tout dans le fichier
For I = 1 To UBound(Tbl)
Print #Index, Tbl(I)
Next I
'ferme le ficher en écriture
Close #Index
Erase Tbl
End Sub
Hervé.
"Trèfle" a écrit dans le message de
news:%23$Bonjour,
Dans un classeur Excel, je liste en colonne C tous les classeurs contenus
dans un dossier, et je voudrais faire une macro pour modifier dans tous
les fichiers texte (1000 env.) de type doc*.inc (ils s'ouvrent avec le
bloc-note), 2 caractères sur la ligne 2 (sans toucher aux autres lignes)
.
Il s'agit de remplacer un "ne" par "bl", ou autre cas, de un "ra" par
"rb"
Ces fichiers blocs-notes ont une quinzaine de lignes et les 2 1ère ligne
toujours les mêmes, soit :
<?
$type = "ne";
, sauf les 2 caractères entre"" qui peuvent varier, mais toujours au
nombre de 2
J'ai essayé avec l'aide en ligne de Excel de récupérer ces données de
type String dans une variable, mais j'ai une erreur d'exécution N°62 :
"l'entrée dépasse la fin du fichier" avec le programme suivant :
Dim MyChar, MyChars, mon_fichier As String
mon_fichier = [C1]
MyChars = ""
Open mon_fichier For Input As #1 ' Ouvre le fichier.
Do While Not EOF(1)
MyChar = Input(1, #1)
MyChars = MyChar & CStr(Input(1, #1))
' Debug.Print MyChar Loop
MsgBox MyChars
Close #1
Dans l'exemple du guide VBA excel, la ligne initiale "Debug.Print MyChar
Loop" affiche bien tous les caractères dans la fenètre d'exécution...mais
je n'arrive pas à récupérer dans une variable string les caractères...
L'idée étant après, avec les fonctions left et right faire la correction
voulue, de le coller dans un nouveau fichier texte que j'aurais
réenregistré sous le nom initial avec un DisplayAlerts= False ...
C'est un peu compliqué, et ce que je sais en vba atteint vite les
limites! Cela vous semble-t-il faisable par Excel, bien que cela ne soit
pas la vocation initiale du vba sous excel.
Merci
Pour exemple, voici un fichier standard à traiter :
<?
$type = "ne";
$fileid = "1744";
$status = "a";
$creadate = "200807171412";
$moddate = "200807211820";
$author = stripslashes("Toto");
$email = stripslashes("");
$fielda1 = stripslashes("");
$fielda2 = stripslashes("");
$fieldb1 = stripslashes("10 jours à Paris");
$fieldb2 = stripslashes("");
$fieldc1 = stripslashes("Super voyage <br /><br /><embed
id="VideoPlayback" style="width:500px;height:406px"
allowFullScreen="true"
src="http://video.google.com/googleplayer......=fr&fs=true"
type="application/x-shockwave-flash"> </embed>");
$fieldc2 = stripslashes("");
$fieldd1 = stripslashes("");
$fieldd2 = stripslashes("");
$fieldweb = stripslashes("");
$fieldmail = stripslashes("");
?>
Bonsoir Trèfle,
Teste d'abords sur deux ou trois fichiers pour voir si tu as le résultat
escompté. Lance la proc "EffectuerModif", j'ai commenté le code pour plus
de compréhension :
Sub EffectuerModif()
Dim I As Integer
Dim Der As Integer
'recherche la dernière ligne
Der = [C65536].End(xlUp).Row
'parcour toutes les lignes de la colonne C
For I = 1 To Der
LireEtModifierFichierTexte Range("C" & I).Value, "bl"
Next I
End Sub
Sub LireEtModifierFichierTexte(Fichier As String, Lettre As String)
Dim Tbl() As String
Dim Index As Integer
Dim I As Integer
'récupère un index libre
Index = FreeFile
'ouvre le fichier en lecture
Open Fichier For Input As #Index
'parcour tout le fichier et
'stocke les lignes dans un tableau
Do While Not EOF(Index)
I = I + 1
ReDim Preserve Tbl(1 To I)
Input #Index, Tbl(I)
Loop
'ferme le ficher en lecture
Close #Index
'et l'ouvre en écriture
Open Fichier For Output As #Index
'effectue la modif dans le tableau
'à la 2ème ligne
Tbl(2) = "$type = """ & Lettre & """"
'réinscrit le tout dans le fichier
For I = 1 To UBound(Tbl)
Print #Index, Tbl(I)
Next I
'ferme le ficher en écriture
Close #Index
Erase Tbl
End Sub
Hervé.
"Trèfle" <nospam@nospam.fr> a écrit dans le message de
news:%23$kWFk4kJHA.4448@TK2MSFTNGP05.phx.gbl...
Bonjour,
Dans un classeur Excel, je liste en colonne C tous les classeurs contenus
dans un dossier, et je voudrais faire une macro pour modifier dans tous
les fichiers texte (1000 env.) de type doc*.inc (ils s'ouvrent avec le
bloc-note), 2 caractères sur la ligne 2 (sans toucher aux autres lignes)
.
Il s'agit de remplacer un "ne" par "bl", ou autre cas, de un "ra" par
"rb"
Ces fichiers blocs-notes ont une quinzaine de lignes et les 2 1ère ligne
toujours les mêmes, soit :
<?
$type = "ne";
, sauf les 2 caractères entre"" qui peuvent varier, mais toujours au
nombre de 2
J'ai essayé avec l'aide en ligne de Excel de récupérer ces données de
type String dans une variable, mais j'ai une erreur d'exécution N°62 :
"l'entrée dépasse la fin du fichier" avec le programme suivant :
Dim MyChar, MyChars, mon_fichier As String
mon_fichier = [C1]
MyChars = ""
Open mon_fichier For Input As #1 ' Ouvre le fichier.
Do While Not EOF(1)
MyChar = Input(1, #1)
MyChars = MyChar & CStr(Input(1, #1))
' Debug.Print MyChar Loop
MsgBox MyChars
Close #1
Dans l'exemple du guide VBA excel, la ligne initiale "Debug.Print MyChar
Loop" affiche bien tous les caractères dans la fenètre d'exécution...mais
je n'arrive pas à récupérer dans une variable string les caractères...
L'idée étant après, avec les fonctions left et right faire la correction
voulue, de le coller dans un nouveau fichier texte que j'aurais
réenregistré sous le nom initial avec un DisplayAlerts= False ...
C'est un peu compliqué, et ce que je sais en vba atteint vite les
limites! Cela vous semble-t-il faisable par Excel, bien que cela ne soit
pas la vocation initiale du vba sous excel.
Merci
Pour exemple, voici un fichier standard à traiter :
<?
$type = "ne";
$fileid = "1744";
$status = "a";
$creadate = "200807171412";
$moddate = "200807211820";
$author = stripslashes("Toto");
$email = stripslashes("jean.toto@orange.fr");
$fielda1 = stripslashes("");
$fielda2 = stripslashes("");
$fieldb1 = stripslashes("10 jours à Paris");
$fieldb2 = stripslashes("");
$fieldc1 = stripslashes("Super voyage <br /><br /><embed
id="VideoPlayback" style="width:500px;height:406px"
allowFullScreen="true"
src="http://video.google.com/googleplayer......=fr&fs=true"
type="application/x-shockwave-flash"> </embed>");
$fieldc2 = stripslashes("");
$fieldd1 = stripslashes("");
$fieldd2 = stripslashes("");
$fieldweb = stripslashes("");
$fieldmail = stripslashes("");
?>
Bonsoir Trèfle,
Teste d'abords sur deux ou trois fichiers pour voir si tu as le résultat
escompté. Lance la proc "EffectuerModif", j'ai commenté le code pour plus
de compréhension :
Sub EffectuerModif()
Dim I As Integer
Dim Der As Integer
'recherche la dernière ligne
Der = [C65536].End(xlUp).Row
'parcour toutes les lignes de la colonne C
For I = 1 To Der
LireEtModifierFichierTexte Range("C" & I).Value, "bl"
Next I
End Sub
Sub LireEtModifierFichierTexte(Fichier As String, Lettre As String)
Dim Tbl() As String
Dim Index As Integer
Dim I As Integer
'récupère un index libre
Index = FreeFile
'ouvre le fichier en lecture
Open Fichier For Input As #Index
'parcour tout le fichier et
'stocke les lignes dans un tableau
Do While Not EOF(Index)
I = I + 1
ReDim Preserve Tbl(1 To I)
Input #Index, Tbl(I)
Loop
'ferme le ficher en lecture
Close #Index
'et l'ouvre en écriture
Open Fichier For Output As #Index
'effectue la modif dans le tableau
'à la 2ème ligne
Tbl(2) = "$type = """ & Lettre & """"
'réinscrit le tout dans le fichier
For I = 1 To UBound(Tbl)
Print #Index, Tbl(I)
Next I
'ferme le ficher en écriture
Close #Index
Erase Tbl
End Sub
Hervé.
"Trèfle" a écrit dans le message de
news:%23$Bonjour,
Dans un classeur Excel, je liste en colonne C tous les classeurs contenus
dans un dossier, et je voudrais faire une macro pour modifier dans tous
les fichiers texte (1000 env.) de type doc*.inc (ils s'ouvrent avec le
bloc-note), 2 caractères sur la ligne 2 (sans toucher aux autres lignes)
.
Il s'agit de remplacer un "ne" par "bl", ou autre cas, de un "ra" par
"rb"
Ces fichiers blocs-notes ont une quinzaine de lignes et les 2 1ère ligne
toujours les mêmes, soit :
<?
$type = "ne";
, sauf les 2 caractères entre"" qui peuvent varier, mais toujours au
nombre de 2
J'ai essayé avec l'aide en ligne de Excel de récupérer ces données de
type String dans une variable, mais j'ai une erreur d'exécution N°62 :
"l'entrée dépasse la fin du fichier" avec le programme suivant :
Dim MyChar, MyChars, mon_fichier As String
mon_fichier = [C1]
MyChars = ""
Open mon_fichier For Input As #1 ' Ouvre le fichier.
Do While Not EOF(1)
MyChar = Input(1, #1)
MyChars = MyChar & CStr(Input(1, #1))
' Debug.Print MyChar Loop
MsgBox MyChars
Close #1
Dans l'exemple du guide VBA excel, la ligne initiale "Debug.Print MyChar
Loop" affiche bien tous les caractères dans la fenètre d'exécution...mais
je n'arrive pas à récupérer dans une variable string les caractères...
L'idée étant après, avec les fonctions left et right faire la correction
voulue, de le coller dans un nouveau fichier texte que j'aurais
réenregistré sous le nom initial avec un DisplayAlerts= False ...
C'est un peu compliqué, et ce que je sais en vba atteint vite les
limites! Cela vous semble-t-il faisable par Excel, bien que cela ne soit
pas la vocation initiale du vba sous excel.
Merci
Pour exemple, voici un fichier standard à traiter :
<?
$type = "ne";
$fileid = "1744";
$status = "a";
$creadate = "200807171412";
$moddate = "200807211820";
$author = stripslashes("Toto");
$email = stripslashes("");
$fielda1 = stripslashes("");
$fielda2 = stripslashes("");
$fieldb1 = stripslashes("10 jours à Paris");
$fieldb2 = stripslashes("");
$fieldc1 = stripslashes("Super voyage <br /><br /><embed
id="VideoPlayback" style="width:500px;height:406px"
allowFullScreen="true"
src="http://video.google.com/googleplayer......=fr&fs=true"
type="application/x-shockwave-flash"> </embed>");
$fieldc2 = stripslashes("");
$fieldd1 = stripslashes("");
$fieldd2 = stripslashes("");
$fieldweb = stripslashes("");
$fieldmail = stripslashes("");
?>