La macro ci-dessous pourra peut-être résoudre votre problème.
QUE FAIT ELLE: 1) Elle recherche le mot le plus long 2) Elle ajoute des espaces devant les autres mots 3) Elle inscrit le résultat sur une feuille d'un nouveau classeur 4) Elle met une police proportionnelle pour faciliter la visualisation
Il ne vous restera plus qu'à enregister le classeur en format csv et , lorsque vous l'ouvrirez, remettre une police proportionnelle (ex: Courier) car les formats ne sont pas conservés à l'enregistrement.
'******************************** Option Explicit Sub LongueurFixe() Dim var Dim i& Dim j& Dim maxi& Dim A$ Dim R As Range Dim W As Workbook Dim S As Worksheet var = ActiveSheet.UsedRange maxi& = -1 '---- Mot le plus long ---- For i& = 1 To UBound(var, 1) For j& = 1 To UBound(var, 2) If Len(var(i&, j&)) > maxi& Then maxi& = Len(var(i&, j&)) End If Next j& Next i& '---- On insère des espaces devant ---- For i& = 1 To UBound(var, 1) For j& = 1 To UBound(var, 2) A$ = CStr(var(i&, j&)) If Len(A$) < maxi& Then A$ = Space(maxi& - Len(A$)) & A$ End If If IsNumeric(A$) Then A$ = "'" & A$ End If var(i&, j&) = A$ Next j& Next i& '---- Récupère l'adresse de la plage concernée ---- Set R = Range(ActiveSheet.UsedRange.Address) '---- Nouveau classeur ---- Set W = Workbooks.Add(xlWorksheet) Set S = W.Sheets(1) S.Range(R.Address) = var '---- On prend une police proportionnelle ---- S.Range(R.Address).Font.Name = "Courier" Columns.AutoFit End Sub '********************************
Est-ce que ça marche ?
Cordialement.
PMO Patrick Morange
Bonjour,
Comment obtenir viea "enregistrer sous..." un fichier csv avec longeur de champ fixe (même nombre de caractères sur toute la colonne?
( ne pas confondre avec largeur de colonne ;-)
Merci pour votre aide
YVEL
Bonjour,
La macro ci-dessous pourra peut-être résoudre votre problème.
QUE FAIT ELLE:
1) Elle recherche le mot le plus long
2) Elle ajoute des espaces devant les autres mots
3) Elle inscrit le résultat sur une feuille d'un nouveau classeur
4) Elle met une police proportionnelle pour faciliter la visualisation
Il ne vous restera plus qu'à enregister le classeur en format csv
et , lorsque vous l'ouvrirez, remettre une police proportionnelle (ex:
Courier)
car les formats ne sont pas conservés à l'enregistrement.
'********************************
Option Explicit
Sub LongueurFixe()
Dim var
Dim i&
Dim j&
Dim maxi&
Dim A$
Dim R As Range
Dim W As Workbook
Dim S As Worksheet
var = ActiveSheet.UsedRange
maxi& = -1
'---- Mot le plus long ----
For i& = 1 To UBound(var, 1)
For j& = 1 To UBound(var, 2)
If Len(var(i&, j&)) > maxi& Then
maxi& = Len(var(i&, j&))
End If
Next j&
Next i&
'---- On insère des espaces devant ----
For i& = 1 To UBound(var, 1)
For j& = 1 To UBound(var, 2)
A$ = CStr(var(i&, j&))
If Len(A$) < maxi& Then
A$ = Space(maxi& - Len(A$)) & A$
End If
If IsNumeric(A$) Then
A$ = "'" & A$
End If
var(i&, j&) = A$
Next j&
Next i&
'---- Récupère l'adresse de la plage concernée ----
Set R = Range(ActiveSheet.UsedRange.Address)
'---- Nouveau classeur ----
Set W = Workbooks.Add(xlWorksheet)
Set S = W.Sheets(1)
S.Range(R.Address) = var
'---- On prend une police proportionnelle ----
S.Range(R.Address).Font.Name = "Courier"
Columns.AutoFit
End Sub
'********************************
Est-ce que ça marche ?
Cordialement.
PMO
Patrick Morange
Bonjour,
Comment obtenir viea "enregistrer sous..." un fichier csv avec longeur de
champ fixe (même nombre de caractères sur toute la colonne?
La macro ci-dessous pourra peut-être résoudre votre problème.
QUE FAIT ELLE: 1) Elle recherche le mot le plus long 2) Elle ajoute des espaces devant les autres mots 3) Elle inscrit le résultat sur une feuille d'un nouveau classeur 4) Elle met une police proportionnelle pour faciliter la visualisation
Il ne vous restera plus qu'à enregister le classeur en format csv et , lorsque vous l'ouvrirez, remettre une police proportionnelle (ex: Courier) car les formats ne sont pas conservés à l'enregistrement.
'******************************** Option Explicit Sub LongueurFixe() Dim var Dim i& Dim j& Dim maxi& Dim A$ Dim R As Range Dim W As Workbook Dim S As Worksheet var = ActiveSheet.UsedRange maxi& = -1 '---- Mot le plus long ---- For i& = 1 To UBound(var, 1) For j& = 1 To UBound(var, 2) If Len(var(i&, j&)) > maxi& Then maxi& = Len(var(i&, j&)) End If Next j& Next i& '---- On insère des espaces devant ---- For i& = 1 To UBound(var, 1) For j& = 1 To UBound(var, 2) A$ = CStr(var(i&, j&)) If Len(A$) < maxi& Then A$ = Space(maxi& - Len(A$)) & A$ End If If IsNumeric(A$) Then A$ = "'" & A$ End If var(i&, j&) = A$ Next j& Next i& '---- Récupère l'adresse de la plage concernée ---- Set R = Range(ActiveSheet.UsedRange.Address) '---- Nouveau classeur ---- Set W = Workbooks.Add(xlWorksheet) Set S = W.Sheets(1) S.Range(R.Address) = var '---- On prend une police proportionnelle ---- S.Range(R.Address).Font.Name = "Courier" Columns.AutoFit End Sub '********************************
Est-ce que ça marche ?
Cordialement.
PMO Patrick Morange
Bonjour,
Comment obtenir viea "enregistrer sous..." un fichier csv avec longeur de champ fixe (même nombre de caractères sur toute la colonne?
( ne pas confondre avec largeur de colonne ;-)
Merci pour votre aide
YVEL
Y V E L
PMO a fait l'effort de rédiger :
Bonjour,
La macro ci-dessous pourra peut-être résoudre votre problème.
QUE FAIT ELLE: 1) Elle recherche le mot le plus long 2) Elle ajoute des espaces devant les autres mots 3) Elle inscrit le résultat sur une feuille d'un nouveau classeur 4) Elle met une police proportionnelle pour faciliter la visualisation
Il ne vous restera plus qu'à enregister le classeur en format csv et , lorsque vous l'ouvrirez, remettre une police proportionnelle (ex: Courier) car les formats ne sont pas conservés à l'enregistrement.
'******************************** Option Explicit
Impressionnant: ça marche! Enfin presque: les données sont cadrées à droite même celles en alphanumérique. Et complétées par "espace" sur leur gauche. J'ai relancé après avoir calé toutes les données à gauche même résultat. Est-il possible d'y apporter une solution?
Précision : j'utilise Excel 2002 Sp2 sur XP pro SP2 Question: la ligne Option Explicit a quel rôle précis (pas de changement apparant avec ou sans)
Dans tous les cas : merci infiniment
-- YVEL
PMO a fait l'effort de rédiger :
Bonjour,
La macro ci-dessous pourra peut-être résoudre votre problème.
QUE FAIT ELLE:
1) Elle recherche le mot le plus long
2) Elle ajoute des espaces devant les autres mots
3) Elle inscrit le résultat sur une feuille d'un nouveau classeur
4) Elle met une police proportionnelle pour faciliter la visualisation
Il ne vous restera plus qu'à enregister le classeur en format csv
et , lorsque vous l'ouvrirez, remettre une police proportionnelle (ex:
Courier)
car les formats ne sont pas conservés à l'enregistrement.
'********************************
Option Explicit
Impressionnant: ça marche!
Enfin presque: les données sont cadrées à droite même celles en
alphanumérique.
Et complétées par "espace" sur leur gauche.
J'ai relancé après avoir calé toutes les données à gauche même résultat.
Est-il possible d'y apporter une solution?
Précision : j'utilise Excel 2002 Sp2 sur XP pro SP2
Question: la ligne Option Explicit a quel rôle précis (pas de changement
apparant avec ou sans)
La macro ci-dessous pourra peut-être résoudre votre problème.
QUE FAIT ELLE: 1) Elle recherche le mot le plus long 2) Elle ajoute des espaces devant les autres mots 3) Elle inscrit le résultat sur une feuille d'un nouveau classeur 4) Elle met une police proportionnelle pour faciliter la visualisation
Il ne vous restera plus qu'à enregister le classeur en format csv et , lorsque vous l'ouvrirez, remettre une police proportionnelle (ex: Courier) car les formats ne sont pas conservés à l'enregistrement.
'******************************** Option Explicit
Impressionnant: ça marche! Enfin presque: les données sont cadrées à droite même celles en alphanumérique. Et complétées par "espace" sur leur gauche. J'ai relancé après avoir calé toutes les données à gauche même résultat. Est-il possible d'y apporter une solution?
Précision : j'utilise Excel 2002 Sp2 sur XP pro SP2 Question: la ligne Option Explicit a quel rôle précis (pas de changement apparant avec ou sans)
Dans tous les cas : merci infiniment
-- YVEL
Y V E L
En complément de ma réponse précédente: toutes les colonnes sont de taille fixe et de longueur identique calquée sur la plus longue: exemple : colonne code postal et ville ont toutes les deux 30 caractères de long Est-ce bien le résultat attendu?
-- YVEL
En complément de ma réponse précédente:
toutes les colonnes sont de taille fixe et de longueur identique calquée sur
la plus longue:
exemple : colonne code postal et ville ont toutes les deux 30 caractères de
long
Est-ce bien le résultat attendu?
En complément de ma réponse précédente: toutes les colonnes sont de taille fixe et de longueur identique calquée sur la plus longue: exemple : colonne code postal et ville ont toutes les deux 30 caractères de long Est-ce bien le résultat attendu?
-- YVEL
PMO
Bonjour,
En premier lieu, réponses à vos 2 questions: 1) Les espaces à droite plutôt qu'à gauche ? C'est possible de faire. 2) Faire des longueurs fixes par colonne en se soumettant au mot le plus long de la colonne (et non pas soumettre au mot le plus long de toute la feuille) ? C'est possible de faire.
En second lieu, je suis actuellement (et heureusement) en mission et je dois remettre à plus tard la modification de la macro selon les critères définis ci-dessus. Mais, promis, dès que je suis libéré je vous fais parvenir une solution. Même si cela dure un peu allez consulter de temps en temps le MPFE.
Cordialement et à bientôt.
PMO Patrick Morange
En complément de ma réponse précédente: toutes les colonnes sont de taille fixe et de longueur identique calquée sur la plus longue: exemple : colonne code postal et ville ont toutes les deux 30 caractères de long Est-ce bien le résultat attendu?
-- YVEL
Bonjour,
En premier lieu, réponses à vos 2 questions:
1) Les espaces à droite plutôt qu'à gauche ? C'est possible de faire.
2) Faire des longueurs fixes par colonne en se soumettant au mot
le plus long de la colonne (et non pas soumettre au mot le plus long
de toute la feuille) ? C'est possible de faire.
En second lieu, je suis actuellement (et heureusement) en mission et je
dois remettre à plus tard la modification de la macro selon les critères
définis ci-dessus.
Mais, promis, dès que je suis libéré je vous fais parvenir une solution.
Même si cela dure un peu allez consulter de temps en temps le MPFE.
Cordialement et à bientôt.
PMO
Patrick Morange
En complément de ma réponse précédente:
toutes les colonnes sont de taille fixe et de longueur identique calquée sur
la plus longue:
exemple : colonne code postal et ville ont toutes les deux 30 caractères de
long
Est-ce bien le résultat attendu?
En premier lieu, réponses à vos 2 questions: 1) Les espaces à droite plutôt qu'à gauche ? C'est possible de faire. 2) Faire des longueurs fixes par colonne en se soumettant au mot le plus long de la colonne (et non pas soumettre au mot le plus long de toute la feuille) ? C'est possible de faire.
En second lieu, je suis actuellement (et heureusement) en mission et je dois remettre à plus tard la modification de la macro selon les critères définis ci-dessus. Mais, promis, dès que je suis libéré je vous fais parvenir une solution. Même si cela dure un peu allez consulter de temps en temps le MPFE.
Cordialement et à bientôt.
PMO Patrick Morange
En complément de ma réponse précédente: toutes les colonnes sont de taille fixe et de longueur identique calquée sur la plus longue: exemple : colonne code postal et ville ont toutes les deux 30 caractères de long Est-ce bien le résultat attendu?
-- YVEL
jps
PMO étant actuellement (et heureusement) en mission, je mimimisce pour cette histoire de ligne Option Explicit en effet, si tu la supprimes, YVEL, tu ne verras pas de différence notoire mais si tu la laisses (ou l'installes en début de proc), elle te permettra une vérification de la bonne orthographe des variables au fil de la rédaction de la proc...ce qui a, pour effet, de ne pas chercher désespérément où ça coince lorsque tu as écrit Dim derLgn et qu'ensuite tu parles de derlign...dont le L ne se mettra pas en majuscules du fait de l'erreur... bon, tu n'as rien compris : ça tombe bien, moi non plus jps
"Y V E L" <yvel002[ä].free.fr> a écrit dans le message de news:%
PMO a fait l'effort de rédiger :
Bonjour,
La macro ci-dessous pourra peut-être résoudre votre problème.
QUE FAIT ELLE: 1) Elle recherche le mot le plus long 2) Elle ajoute des espaces devant les autres mots 3) Elle inscrit le résultat sur une feuille d'un nouveau classeur 4) Elle met une police proportionnelle pour faciliter la visualisation
Il ne vous restera plus qu'à enregister le classeur en format csv et , lorsque vous l'ouvrirez, remettre une police proportionnelle (ex: Courier) car les formats ne sont pas conservés à l'enregistrement.
'******************************** Option Explicit
Impressionnant: ça marche! Enfin presque: les données sont cadrées à droite même celles en alphanumérique. Et complétées par "espace" sur leur gauche. J'ai relancé après avoir calé toutes les données à gauche même résultat. Est-il possible d'y apporter une solution?
Précision : j'utilise Excel 2002 Sp2 sur XP pro SP2 Question: la ligne Option Explicit a quel rôle précis (pas de changement apparant avec ou sans)
Dans tous les cas : merci infiniment
-- YVEL
PMO étant actuellement (et heureusement) en mission, je mimimisce pour cette
histoire de ligne Option Explicit
en effet, si tu la supprimes, YVEL, tu ne verras pas de différence notoire
mais si tu la laisses (ou l'installes en début de proc), elle te permettra
une vérification de la bonne orthographe des variables au fil de la
rédaction de la proc...ce qui a, pour effet, de ne pas chercher
désespérément où ça coince lorsque tu as écrit Dim derLgn et qu'ensuite tu
parles de derlign...dont le L ne se mettra pas en majuscules du fait de
l'erreur...
bon, tu n'as rien compris : ça tombe bien, moi non plus
jps
"Y V E L" <yvel002[ä].free.fr> a écrit dans le message de
news:%23Io6CjKzEHA.3236@TK2MSFTNGP15.phx.gbl...
PMO a fait l'effort de rédiger :
Bonjour,
La macro ci-dessous pourra peut-être résoudre votre problème.
QUE FAIT ELLE:
1) Elle recherche le mot le plus long
2) Elle ajoute des espaces devant les autres mots
3) Elle inscrit le résultat sur une feuille d'un nouveau classeur
4) Elle met une police proportionnelle pour faciliter la visualisation
Il ne vous restera plus qu'à enregister le classeur en format csv
et , lorsque vous l'ouvrirez, remettre une police proportionnelle (ex:
Courier)
car les formats ne sont pas conservés à l'enregistrement.
'********************************
Option Explicit
Impressionnant: ça marche!
Enfin presque: les données sont cadrées à droite même celles en
alphanumérique.
Et complétées par "espace" sur leur gauche.
J'ai relancé après avoir calé toutes les données à gauche même résultat.
Est-il possible d'y apporter une solution?
Précision : j'utilise Excel 2002 Sp2 sur XP pro SP2
Question: la ligne Option Explicit a quel rôle précis (pas de changement
apparant avec ou sans)
PMO étant actuellement (et heureusement) en mission, je mimimisce pour cette histoire de ligne Option Explicit en effet, si tu la supprimes, YVEL, tu ne verras pas de différence notoire mais si tu la laisses (ou l'installes en début de proc), elle te permettra une vérification de la bonne orthographe des variables au fil de la rédaction de la proc...ce qui a, pour effet, de ne pas chercher désespérément où ça coince lorsque tu as écrit Dim derLgn et qu'ensuite tu parles de derlign...dont le L ne se mettra pas en majuscules du fait de l'erreur... bon, tu n'as rien compris : ça tombe bien, moi non plus jps
"Y V E L" <yvel002[ä].free.fr> a écrit dans le message de news:%
PMO a fait l'effort de rédiger :
Bonjour,
La macro ci-dessous pourra peut-être résoudre votre problème.
QUE FAIT ELLE: 1) Elle recherche le mot le plus long 2) Elle ajoute des espaces devant les autres mots 3) Elle inscrit le résultat sur une feuille d'un nouveau classeur 4) Elle met une police proportionnelle pour faciliter la visualisation
Il ne vous restera plus qu'à enregister le classeur en format csv et , lorsque vous l'ouvrirez, remettre une police proportionnelle (ex: Courier) car les formats ne sont pas conservés à l'enregistrement.
'******************************** Option Explicit
Impressionnant: ça marche! Enfin presque: les données sont cadrées à droite même celles en alphanumérique. Et complétées par "espace" sur leur gauche. J'ai relancé après avoir calé toutes les données à gauche même résultat. Est-il possible d'y apporter une solution?
Précision : j'utilise Excel 2002 Sp2 sur XP pro SP2 Question: la ligne Option Explicit a quel rôle précis (pas de changement apparant avec ou sans)
Dans tous les cas : merci infiniment
-- YVEL
Y V E L
jps a fait l'effort de rédiger :
PMO étant actuellement (et heureusement) en mission, je mimimisce pour cette histoire de ligne Option Explicit en effet, si tu la supprimes, YVEL, tu ne verras pas de différence notoire mais si tu la laisses (ou l'installes en début de proc), elle te permettra une vérification de la bonne orthographe des variables au fil de la rédaction de la proc...ce qui a, pour effet, de ne pas chercher désespérément où ça coince lorsque tu as écrit Dim derLgn et qu'ensuite tu parles de derlign...dont le L ne se mettra pas en majuscules du fait de l'erreur... bon, tu n'as rien compris : ça tombe bien, moi non plus jps
Y a que du bon dans ce NG est cela fait du bien.
Comme dit plus haut je n'ai rien compris mais mon intuition (et ta tentive) me dis qu'il faut rien toucher à c'écrit PMO !!
Merci.
-- YVEL
jps a fait l'effort de rédiger :
PMO étant actuellement (et heureusement) en mission, je mimimisce
pour cette histoire de ligne Option Explicit
en effet, si tu la supprimes, YVEL, tu ne verras pas de différence
notoire mais si tu la laisses (ou l'installes en début de proc), elle
te permettra une vérification de la bonne orthographe des variables
au fil de la rédaction de la proc...ce qui a, pour effet, de ne pas
chercher désespérément où ça coince lorsque tu as écrit Dim derLgn et
qu'ensuite tu parles de derlign...dont le L ne se mettra pas en
majuscules du fait de l'erreur...
bon, tu n'as rien compris : ça tombe bien, moi non plus
jps
Y a que du bon dans ce NG est cela fait du bien.
Comme dit plus haut je n'ai rien compris mais mon intuition (et ta tentive)
me dis qu'il faut rien toucher à c'écrit PMO !!
PMO étant actuellement (et heureusement) en mission, je mimimisce pour cette histoire de ligne Option Explicit en effet, si tu la supprimes, YVEL, tu ne verras pas de différence notoire mais si tu la laisses (ou l'installes en début de proc), elle te permettra une vérification de la bonne orthographe des variables au fil de la rédaction de la proc...ce qui a, pour effet, de ne pas chercher désespérément où ça coince lorsque tu as écrit Dim derLgn et qu'ensuite tu parles de derlign...dont le L ne se mettra pas en majuscules du fait de l'erreur... bon, tu n'as rien compris : ça tombe bien, moi non plus jps
Y a que du bon dans ce NG est cela fait du bien.
Comme dit plus haut je n'ai rien compris mais mon intuition (et ta tentive) me dis qu'il faut rien toucher à c'écrit PMO !!
Merci.
-- YVEL
Y V E L
PMO a fait l'effort de rédiger :
Bonjour,
En premier lieu, réponses à vos 2 questions: 1) Les espaces à droite plutôt qu'à gauche ? C'est possible de faire. 2) Faire des longueurs fixes par colonne en se soumettant au mot le plus long de la colonne (et non pas soumettre au mot le plus long de toute la feuille) ? C'est possible de faire.
En second lieu, je suis actuellement (et heureusement) en mission et je dois remettre à plus tard la modification de la macro selon les critères définis ci-dessus. Mais, promis, dès que je suis libéré je vous fais parvenir une solution. Même si cela dure un peu allez consulter de temps en temps le MPFE.
Cordialement et à bientôt.
PMO Patrick Morange
Je vous suis gré d'avoir bien voulu tenir compte de mes remarques Je ne sais pour combien de temps vous êtes actuellement (et heureusement) en mission: je ferai donc comme soeur Anne ;-) .
Merci d'avance
-- YVEL
PMO a fait l'effort de rédiger :
Bonjour,
En premier lieu, réponses à vos 2 questions:
1) Les espaces à droite plutôt qu'à gauche ? C'est possible de faire.
2) Faire des longueurs fixes par colonne en se soumettant au mot
le plus long de la colonne (et non pas soumettre au mot le plus
long de toute la feuille) ? C'est possible de faire.
En second lieu, je suis actuellement (et heureusement) en mission et
je
dois remettre à plus tard la modification de la macro selon les
critères définis ci-dessus.
Mais, promis, dès que je suis libéré je vous fais parvenir une
solution.
Même si cela dure un peu allez consulter de temps en temps le MPFE.
Cordialement et à bientôt.
PMO
Patrick Morange
Je vous suis gré d'avoir bien voulu tenir compte de mes remarques
Je ne sais pour combien de temps vous êtes actuellement (et heureusement) en
mission: je ferai donc comme soeur Anne ;-) .
En premier lieu, réponses à vos 2 questions: 1) Les espaces à droite plutôt qu'à gauche ? C'est possible de faire. 2) Faire des longueurs fixes par colonne en se soumettant au mot le plus long de la colonne (et non pas soumettre au mot le plus long de toute la feuille) ? C'est possible de faire.
En second lieu, je suis actuellement (et heureusement) en mission et je dois remettre à plus tard la modification de la macro selon les critères définis ci-dessus. Mais, promis, dès que je suis libéré je vous fais parvenir une solution. Même si cela dure un peu allez consulter de temps en temps le MPFE.
Cordialement et à bientôt.
PMO Patrick Morange
Je vous suis gré d'avoir bien voulu tenir compte de mes remarques Je ne sais pour combien de temps vous êtes actuellement (et heureusement) en mission: je ferai donc comme soeur Anne ;-) .
Merci d'avance
-- YVEL
PMO
Bonjour,
Au cours de mes périgrinations RATPistes j'ai rectifié la macro. Comme c'est du vite fait, prenez vos précautions pour la tester. Sinon c'est dans le droit fil de vos remarques. Remplacez l'ancien code (tout en le conservant précieusement des fois que ça ne fonctionne pas) par le nouveau code ci-dessous.
'********************************** Option Explicit Sub LongueurFixe() Dim var Dim i& Dim j& Dim k& Dim big& Dim maxi&() Dim A$ Dim R As Range Dim W As Workbook Dim S As Worksheet var = ActiveSheet.UsedRange '---- Mot le plus long par colonne ---- For j& = 1 To UBound(var, 2) big& = 0 For i& = 1 To UBound(var, 1) If Len(var(i&, j&)) > big& Then big& = Len(var(i&, j&)) End If Next i& k& = k& + 1 ReDim Preserve maxi&(1 To k&) maxi&(k&) = big& Next j& '---- On insère des espaces devant ---- For j& = 1 To UBound(var, 2) For i& = 1 To UBound(var, 1) A$ = CStr(var(i&, j&)) If Len(A$) < maxi&(j&) Then A$ = A$ & Space(maxi&(j&) - Len(A$)) End If If IsNumeric(A$) Then A$ = "'" & A$ End If var(i&, j&) = A$ Next i& Next j& '---- Récupère l'adresse de la plage concernée ---- Set R = Range(ActiveSheet.UsedRange.Address) '---- Nouveau classeur ---- Set W = Workbooks.Add(xlWorksheet) Set S = W.Sheets(1) S.Range(R.Address) = var '---- On prend une police proportionnelle ---- S.Range(R.Address).Font.Name = "Courier" Columns.AutoFit End Sub '**********************************
Est-ce que ça correspond à votre attente ?
Cordialement.
PMO Patrick Morange
PMO a fait l'effort de rédiger :
Bonjour,
En premier lieu, réponses à vos 2 questions: 1) Les espaces à droite plutôt qu'à gauche ? C'est possible de faire. 2) Faire des longueurs fixes par colonne en se soumettant au mot le plus long de la colonne (et non pas soumettre au mot le plus long de toute la feuille) ? C'est possible de faire.
En second lieu, je suis actuellement (et heureusement) en mission et je dois remettre à plus tard la modification de la macro selon les critères définis ci-dessus. Mais, promis, dès que je suis libéré je vous fais parvenir une solution. Même si cela dure un peu allez consulter de temps en temps le MPFE.
Cordialement et à bientôt.
PMO Patrick Morange
Je vous suis gré d'avoir bien voulu tenir compte de mes remarques Je ne sais pour combien de temps vous êtes actuellement (et heureusement) en mission: je ferai donc comme soeur Anne ;-) .
Merci d'avance
-- YVEL
Bonjour,
Au cours de mes périgrinations RATPistes j'ai rectifié la macro.
Comme c'est du vite fait, prenez vos précautions pour la tester.
Sinon c'est dans le droit fil de vos remarques.
Remplacez l'ancien code (tout en le conservant précieusement des fois
que ça ne fonctionne pas) par le nouveau code ci-dessous.
'**********************************
Option Explicit
Sub LongueurFixe()
Dim var
Dim i&
Dim j&
Dim k&
Dim big&
Dim maxi&()
Dim A$
Dim R As Range
Dim W As Workbook
Dim S As Worksheet
var = ActiveSheet.UsedRange
'---- Mot le plus long par colonne ----
For j& = 1 To UBound(var, 2)
big& = 0
For i& = 1 To UBound(var, 1)
If Len(var(i&, j&)) > big& Then
big& = Len(var(i&, j&))
End If
Next i&
k& = k& + 1
ReDim Preserve maxi&(1 To k&)
maxi&(k&) = big&
Next j&
'---- On insère des espaces devant ----
For j& = 1 To UBound(var, 2)
For i& = 1 To UBound(var, 1)
A$ = CStr(var(i&, j&))
If Len(A$) < maxi&(j&) Then
A$ = A$ & Space(maxi&(j&) - Len(A$))
End If
If IsNumeric(A$) Then
A$ = "'" & A$
End If
var(i&, j&) = A$
Next i&
Next j&
'---- Récupère l'adresse de la plage concernée ----
Set R = Range(ActiveSheet.UsedRange.Address)
'---- Nouveau classeur ----
Set W = Workbooks.Add(xlWorksheet)
Set S = W.Sheets(1)
S.Range(R.Address) = var
'---- On prend une police proportionnelle ----
S.Range(R.Address).Font.Name = "Courier"
Columns.AutoFit
End Sub
'**********************************
Est-ce que ça correspond à votre attente ?
Cordialement.
PMO
Patrick Morange
PMO a fait l'effort de rédiger :
Bonjour,
En premier lieu, réponses à vos 2 questions:
1) Les espaces à droite plutôt qu'à gauche ? C'est possible de faire.
2) Faire des longueurs fixes par colonne en se soumettant au mot
le plus long de la colonne (et non pas soumettre au mot le plus
long de toute la feuille) ? C'est possible de faire.
En second lieu, je suis actuellement (et heureusement) en mission et
je
dois remettre à plus tard la modification de la macro selon les
critères définis ci-dessus.
Mais, promis, dès que je suis libéré je vous fais parvenir une
solution.
Même si cela dure un peu allez consulter de temps en temps le MPFE.
Cordialement et à bientôt.
PMO
Patrick Morange
Je vous suis gré d'avoir bien voulu tenir compte de mes remarques
Je ne sais pour combien de temps vous êtes actuellement (et heureusement) en
mission: je ferai donc comme soeur Anne ;-) .
Au cours de mes périgrinations RATPistes j'ai rectifié la macro. Comme c'est du vite fait, prenez vos précautions pour la tester. Sinon c'est dans le droit fil de vos remarques. Remplacez l'ancien code (tout en le conservant précieusement des fois que ça ne fonctionne pas) par le nouveau code ci-dessous.
'********************************** Option Explicit Sub LongueurFixe() Dim var Dim i& Dim j& Dim k& Dim big& Dim maxi&() Dim A$ Dim R As Range Dim W As Workbook Dim S As Worksheet var = ActiveSheet.UsedRange '---- Mot le plus long par colonne ---- For j& = 1 To UBound(var, 2) big& = 0 For i& = 1 To UBound(var, 1) If Len(var(i&, j&)) > big& Then big& = Len(var(i&, j&)) End If Next i& k& = k& + 1 ReDim Preserve maxi&(1 To k&) maxi&(k&) = big& Next j& '---- On insère des espaces devant ---- For j& = 1 To UBound(var, 2) For i& = 1 To UBound(var, 1) A$ = CStr(var(i&, j&)) If Len(A$) < maxi&(j&) Then A$ = A$ & Space(maxi&(j&) - Len(A$)) End If If IsNumeric(A$) Then A$ = "'" & A$ End If var(i&, j&) = A$ Next i& Next j& '---- Récupère l'adresse de la plage concernée ---- Set R = Range(ActiveSheet.UsedRange.Address) '---- Nouveau classeur ---- Set W = Workbooks.Add(xlWorksheet) Set S = W.Sheets(1) S.Range(R.Address) = var '---- On prend une police proportionnelle ---- S.Range(R.Address).Font.Name = "Courier" Columns.AutoFit End Sub '**********************************
Est-ce que ça correspond à votre attente ?
Cordialement.
PMO Patrick Morange
PMO a fait l'effort de rédiger :
Bonjour,
En premier lieu, réponses à vos 2 questions: 1) Les espaces à droite plutôt qu'à gauche ? C'est possible de faire. 2) Faire des longueurs fixes par colonne en se soumettant au mot le plus long de la colonne (et non pas soumettre au mot le plus long de toute la feuille) ? C'est possible de faire.
En second lieu, je suis actuellement (et heureusement) en mission et je dois remettre à plus tard la modification de la macro selon les critères définis ci-dessus. Mais, promis, dès que je suis libéré je vous fais parvenir une solution. Même si cela dure un peu allez consulter de temps en temps le MPFE.
Cordialement et à bientôt.
PMO Patrick Morange
Je vous suis gré d'avoir bien voulu tenir compte de mes remarques Je ne sais pour combien de temps vous êtes actuellement (et heureusement) en mission: je ferai donc comme soeur Anne ;-) .
Merci d'avance
-- YVEL
Michel Pierron
Bonsoir Y V E L; Il suffit de déclarer une variable String de la longueur voulue. Exemple pour un champ de longueur 10: Sub Transpose() Dim i&, Champ As String * 10 i = 1 Do If Cells(i, 1) = "" Then Exit Sub Champ = Cells(i, 1) Cells(i, 1) = Champ i = i + 1 Loop End Sub
Ne reste plus qu'à enregistrer au format csv. MP
"Y V E L" <yvel002[ä].free.fr> a écrit dans le message de news:ewq$bS%
Bonjour,
Comment obtenir viea "enregistrer sous..." un fichier csv avec longeur de champ fixe (même nombre de caractères sur toute la colonne?
( ne pas confondre avec largeur de colonne ;-)
Merci pour votre aide
YVEL
Bonsoir Y V E L;
Il suffit de déclarer une variable String de la longueur voulue.
Exemple pour un champ de longueur 10:
Sub Transpose()
Dim i&, Champ As String * 10
i = 1
Do
If Cells(i, 1) = "" Then Exit Sub
Champ = Cells(i, 1)
Cells(i, 1) = Champ
i = i + 1
Loop
End Sub
Ne reste plus qu'à enregistrer au format csv.
MP
"Y V E L" <yvel002[ä].free.fr> a écrit dans le message de
news:ewq$bS%23yEHA.3908@TK2MSFTNGP12.phx.gbl...
Bonjour,
Comment obtenir viea "enregistrer sous..." un fichier csv avec longeur de
champ fixe (même nombre de caractères sur toute la colonne?
Bonsoir Y V E L; Il suffit de déclarer une variable String de la longueur voulue. Exemple pour un champ de longueur 10: Sub Transpose() Dim i&, Champ As String * 10 i = 1 Do If Cells(i, 1) = "" Then Exit Sub Champ = Cells(i, 1) Cells(i, 1) = Champ i = i + 1 Loop End Sub
Ne reste plus qu'à enregistrer au format csv. MP
"Y V E L" <yvel002[ä].free.fr> a écrit dans le message de news:ewq$bS%
Bonjour,
Comment obtenir viea "enregistrer sous..." un fichier csv avec longeur de champ fixe (même nombre de caractères sur toute la colonne?
( ne pas confondre avec largeur de colonne ;-)
Merci pour votre aide
YVEL
Y V E L
PMO a fait l'effort de rédiger :
Bonjour,
Au cours de mes périgrinations RATPistes j'ai rectifié la macro. Comme c'est du vite fait, prenez vos précautions pour la tester. Sinon c'est dans le droit fil de vos remarques. Remplacez l'ancien code (tout en le conservant précieusement des fois que ça ne fonctionne pas) par le nouveau code ci-dessous.
Vous pilotez le métro en développant? Cela restera entre nous ;-)
La nouvelle version semble fonctionner nickel !
Merci infiniment.
-- YVEL
PMO a fait l'effort de rédiger :
Bonjour,
Au cours de mes périgrinations RATPistes j'ai rectifié la macro.
Comme c'est du vite fait, prenez vos précautions pour la tester.
Sinon c'est dans le droit fil de vos remarques.
Remplacez l'ancien code (tout en le conservant précieusement des fois
que ça ne fonctionne pas) par le nouveau code ci-dessous.
Vous pilotez le métro en développant?
Cela restera entre nous ;-)
Au cours de mes périgrinations RATPistes j'ai rectifié la macro. Comme c'est du vite fait, prenez vos précautions pour la tester. Sinon c'est dans le droit fil de vos remarques. Remplacez l'ancien code (tout en le conservant précieusement des fois que ça ne fonctionne pas) par le nouveau code ci-dessous.
Vous pilotez le métro en développant? Cela restera entre nous ;-)