Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Question de béotien: ouverture automatique d'un fichier csv

16 réponses
Avatar
EricP
Bonjour,

Systématiquement, un double-clic sur un fichier csv génère l'ouverture
d'Excel (çà, je sais faire) puis il faut faire:
- sélection de la colonne A
- Données / Convertir
- assistant de conversion (3 écrans)

1°) Y a t'il moyen d'automatiser cette séquence de manipulations ?

2°) Dans le cas où l'on a récupéré un tableau, il faut faire:
- sélection des données
- clic sur l'icône Bordures
- choix d'une bordure (au minimum)

Y a t'il moyen, là aussi, d'automatiser cette séquence de manip. ?


J'ai cherché un peu partout: je n'ai pas trouvé de réponse ...

Merci d'avance,

EricP

10 réponses

1 2
Avatar
Chris MICHEL
Bonjour,

l'enregistreur de macros peut résoudre tes problèmes.

Pourla première question: ouvre un fichier csv. Va sur
outils/macro/nouvelle macro Dans la liste déroulante, va
sur "classeur de macro personnel". Tu peus même mettre un
raccourci clavier. Donne lui un nom clair (attention: pas
d'espace dans le nom d'une macro).

Fais ensuite ce que tu fais à chaque fois que tu ouvres un
fichier de ce style. Une fois que c'est fini, clique sur
le petit carré bleu qui est dans le petit carré gris (ou
fais: outils/macro/arréter l'enregistrement)

La macro que tu viens de créer fera strictement la même
chose que ce que tu viens d'enregistrer. Elle sera
accessible à chaque fois que tu ouvriras Excel.

Pour ta deuxième question, c'est dans la même veine.
Toutefois, si le tableau de résultat est de taille
variable, je te conseille d'avoir dans ta barre d'outils
la petite icone permettant de sélectionner une région
(fais un clic droit sur la barre grise d'Excel, cliques
sur "personnaliser", va sur l'onglet commandes, va dans le
menu édition et tout en bas de la fenêtre de droite, tu as
l'icone en question: tu n'as plus qu'à la déplacer jusqu'à
ta barre grise, entre deux icones existant déja).

Une fois que tu as ton icone, lance à nouveau un
enregistrement d'une nouvelle macro (nouveau nom, nouveau
raccourci).

Clique sur une case qui fera toujours partie du tableau,
quelle que soit sa taille (A1?), puis clique sur l'icone
sélectionnant la région etmet les bordures que tu veux.
Puis arrète l'enregistrement (même méthode qu'avant).

Voila: pour appeller tes macros, tu peux soit utiliser le
menu outil/macro/macro/la macro que tu veux lancer
ou utiliser le raccourci que tu auras défini.

Si tu as des questions, n'hésite pas.

Chris.

-----Message d'origine-----
Bonjour,

Systématiquement, un double-clic sur un fichier csv
génère l'ouverture

d'Excel (çà, je sais faire) puis il faut faire:
- sélection de la colonne A
- Données / Convertir
- assistant de conversion (3 écrans)

1°) Y a t'il moyen d'automatiser cette séquence de
manipulations ?


2°) Dans le cas où l'on a récupéré un tableau, il faut
faire:

- sélection des données
- clic sur l'icône Bordures
- choix d'une bordure (au minimum)

Y a t'il moyen, là aussi, d'automatiser cette séquence de
manip. ?



J'ai cherché un peu partout: je n'ai pas trouvé de
réponse ...


Merci d'avance,

EricP

.



Avatar
EricP
Merci Michel,

Mais ces macros dépendent de la taille (et de la forme) du fichier csv à
ouvrir.
C'est-à-dire que si j'ai créé les macros pour un tableau 10 x 5, et que
je les utilise pour un tableau 15 x 20, les macros ne s'exécuteront que
sur les 10 x 5 premières cellules.

Y a t'il moyen de rendre l'exécution de ces macros indépendante des
dimensions des tableaux (en bouclant sur une recherche de cellule vide
par exemple)?

Cordialement,
Eric


Bonjour,

l'enregistreur de macros peut résoudre tes problèmes.

Pourla première question: ouvre un fichier csv. Va sur
outils/macro/nouvelle macro Dans la liste déroulante, va
sur "classeur de macro personnel". Tu peus même mettre un
raccourci clavier. Donne lui un nom clair (attention: pas
d'espace dans le nom d'une macro).

Fais ensuite ce que tu fais à chaque fois que tu ouvres un
fichier de ce style. Une fois que c'est fini, clique sur
le petit carré bleu qui est dans le petit carré gris (ou
fais: outils/macro/arréter l'enregistrement)

La macro que tu viens de créer fera strictement la même
chose que ce que tu viens d'enregistrer. Elle sera
accessible à chaque fois que tu ouvriras Excel.

Pour ta deuxième question, c'est dans la même veine.
Toutefois, si le tableau de résultat est de taille
variable, je te conseille d'avoir dans ta barre d'outils
la petite icone permettant de sélectionner une région
(fais un clic droit sur la barre grise d'Excel, cliques
sur "personnaliser", va sur l'onglet commandes, va dans le
menu édition et tout en bas de la fenêtre de droite, tu as
l'icone en question: tu n'as plus qu'à la déplacer jusqu'à
ta barre grise, entre deux icones existant déja).

Une fois que tu as ton icone, lance à nouveau un
enregistrement d'une nouvelle macro (nouveau nom, nouveau
raccourci).

Clique sur une case qui fera toujours partie du tableau,
quelle que soit sa taille (A1?), puis clique sur l'icone
sélectionnant la région etmet les bordures que tu veux.
Puis arrète l'enregistrement (même méthode qu'avant).

Voila: pour appeller tes macros, tu peux soit utiliser le
menu outil/macro/macro/la macro que tu veux lancer
ou utiliser le raccourci que tu auras défini.

Si tu as des questions, n'hésite pas.

Chris.


-----Message d'origine-----
Bonjour,

Systématiquement, un double-clic sur un fichier csv


génère l'ouverture

d'Excel (çà, je sais faire) puis il faut faire:
- sélection de la colonne A
- Données / Convertir
- assistant de conversion (3 écrans)

1°) Y a t'il moyen d'automatiser cette séquence de


manipulations ?

2°) Dans le cas où l'on a récupéré un tableau, il faut


faire:

- sélection des données
- clic sur l'icône Bordures
- choix d'une bordure (au minimum)

Y a t'il moyen, là aussi, d'automatiser cette séquence de


manip. ?


J'ai cherché un peu partout: je n'ai pas trouvé de


réponse ...

Merci d'avance,

EricP

.






Avatar
Si, il est tout à fait possible d'automatiser, mais il
faudrait que tu sois plus précis sur ce que tu veux faire
et sur les formes que peuvent prendre tes fichiers.

Par exemple, la deuxième macro (celle qui met des
bordures) que je t'ai indiquée utilisait l'icone "région
courante", qui permet de sélectionner une région qui peut
être de taille variable. Cela ne suffit-il pas?

Pour la première macro: A quelle zone veux-tu appliquer la
conversion de données? Toujours à la colonne A? Parce que
là, si tu appliques ta conversion à toute la colonne, le
nombre de lignes n'a pas d'importance.

De toute façon, la façon de faire sera la suivante. Il va
falloir aller dans le code de tes macros
(outil/macro/macro sélectionne la macro qui t'intéresse
et fais "modifier"). ensuite, il faut que tu repères
quelle est la partie "active" de ta macro (la partie du
code qui fait vraiment quelque chose) et la partie qui
sélectionne l'endroit de ton fichier qui va être modifié.
Il faudra ensuite modifier cette dernière de façon à ce
qu'elle soit plus souple (je t'expliquerai comment quand
tu m'auras donné plus de détails).

Chris.
-----Message d'origine-----
Merci Michel,

Mais ces macros dépendent de la taille (et de la forme)
du fichier csv à

ouvrir.
C'est-à-dire que si j'ai créé les macros pour un tableau
10 x 5, et que

je les utilise pour un tableau 15 x 20, les macros ne
s'exécuteront que

sur les 10 x 5 premières cellules.

Y a t'il moyen de rendre l'exécution de ces macros
indépendante des

dimensions des tableaux (en bouclant sur une recherche de
cellule vide

par exemple)?

Cordialement,
Eric


Bonjour,

l'enregistreur de macros peut résoudre tes problèmes.

Pourla première question: ouvre un fichier csv. Va sur
outils/macro/nouvelle macro Dans la liste déroulante,
va


sur "classeur de macro personnel". Tu peus même mettre
un


raccourci clavier. Donne lui un nom clair (attention:
pas


d'espace dans le nom d'une macro).

Fais ensuite ce que tu fais à chaque fois que tu ouvres
un


fichier de ce style. Une fois que c'est fini, clique
sur


le petit carré bleu qui est dans le petit carré gris
(ou


fais: outils/macro/arréter l'enregistrement)

La macro que tu viens de créer fera strictement la même
chose que ce que tu viens d'enregistrer. Elle sera
accessible à chaque fois que tu ouvriras Excel.

Pour ta deuxième question, c'est dans la même veine.
Toutefois, si le tableau de résultat est de taille
variable, je te conseille d'avoir dans ta barre
d'outils


la petite icone permettant de sélectionner une région
(fais un clic droit sur la barre grise d'Excel, cliques
sur "personnaliser", va sur l'onglet commandes, va dans
le


menu édition et tout en bas de la fenêtre de droite, tu
as


l'icone en question: tu n'as plus qu'à la déplacer
jusqu'à


ta barre grise, entre deux icones existant déja).

Une fois que tu as ton icone, lance à nouveau un
enregistrement d'une nouvelle macro (nouveau nom,
nouveau


raccourci).

Clique sur une case qui fera toujours partie du
tableau,


quelle que soit sa taille (A1?), puis clique sur
l'icone


sélectionnant la région etmet les bordures que tu
veux.


Puis arrète l'enregistrement (même méthode qu'avant).

Voila: pour appeller tes macros, tu peux soit utiliser
le


menu outil/macro/macro/la macro que tu veux lancer
ou utiliser le raccourci que tu auras défini.

Si tu as des questions, n'hésite pas.

Chris.


-----Message d'origine-----
Bonjour,

Systématiquement, un double-clic sur un fichier csv


génère l'ouverture

d'Excel (çà, je sais faire) puis il faut faire:
- sélection de la colonne A
- Données / Convertir
- assistant de conversion (3 écrans)

1°) Y a t'il moyen d'automatiser cette séquence de


manipulations ?

2°) Dans le cas où l'on a récupéré un tableau, il faut


faire:

- sélection des données
- clic sur l'icône Bordures
- choix d'une bordure (au minimum)

Y a t'il moyen, là aussi, d'automatiser cette séquence
de




manip. ?


J'ai cherché un peu partout: je n'ai pas trouvé de


réponse ...

Merci d'avance,

EricP

.





.





Avatar
EricP
Si, il est tout à fait possible d'automatiser, mais il
faudrait que tu sois plus précis sur ce que tu veux faire
et sur les formes que peuvent prendre tes fichiers.

Par exemple, la deuxième macro (celle qui met des
bordures) que je t'ai indiquée utilisait l'icone "région
courante", qui permet de sélectionner une région qui peut
être de taille variable. Cela ne suffit-il pas?

Si, c'est parfait! Mais, ne voyant pas s'afficher le petit carré bleu

de fin de macro, j'ai cru à une erreur. Je l'ai remplacé par
Outils/Macro/...

Pour la première macro: A quelle zone veux-tu appliquer la
conversion de données? Toujours à la colonne A? Parce que
là, si tu appliques ta conversion à toute la colonne, le
nombre de lignes n'a pas d'importance.

C'est parfait aussi! La conversion s'applique toujours à la colonne A,

quelque soit le nbre de lignes.

De toute façon, la façon de faire sera la suivante. Il va
falloir aller dans le code de tes macros
(outil/macro/macro sélectionne la macro qui t'intéresse
et fais "modifier"). ensuite, il faut que tu repères
quelle est la partie "active" de ta macro (la partie du
code qui fait vraiment quelque chose) et la partie qui
sélectionne l'endroit de ton fichier qui va être modifié.
Il faudra ensuite modifier cette dernière de façon à ce
qu'elle soit plus souple (je t'expliquerai comment quand
tu m'auras donné plus de détails).


Je souhaite maintenant:
- créer une "super" macro qui exécute les 2 macros (conversion, puis
encadrement)
- et si possible (?) faire exécuter cette "super" macro automatiquement
à l'ouverture d'un fichier csv

C'est jouable ?

Avatar
Chris MICHEL
Pour la super-macro, pas de pb: en supposant que tu aies
appellé ta deuxième macro "tracer_bordures", tu vas sur
outil/macro/macro, tu sélectionnes ta PREMIERE macro, tu
vas tout à la fin du code (juste avant end sub qui
délimite la fin de la macro) et tu écris: tracer_bordures
(pas de guillemets ou de parenthèses, juste le nom de la
macro) sur une ligne vide.

Pour le lancement automatique, c'est un peu plus
compliqué. Je vois ce que je peux faire.

Chris.
-----Message d'origine-----
Si, il est tout à fait possible d'automatiser, mais il
faudrait que tu sois plus précis sur ce que tu veux
faire


et sur les formes que peuvent prendre tes fichiers.

Par exemple, la deuxième macro (celle qui met des
bordures) que je t'ai indiquée utilisait
l'icone "région


courante", qui permet de sélectionner une région qui
peut


être de taille variable. Cela ne suffit-il pas?

Si, c'est parfait! Mais, ne voyant pas s'afficher le

petit carré bleu

de fin de macro, j'ai cru à une erreur. Je l'ai remplacé
par

Outils/Macro/...

Pour la première macro: A quelle zone veux-tu appliquer
la


conversion de données? Toujours à la colonne A? Parce
que


là, si tu appliques ta conversion à toute la colonne,
le


nombre de lignes n'a pas d'importance.

C'est parfait aussi! La conversion s'applique toujours à

la colonne A,

quelque soit le nbre de lignes.

De toute façon, la façon de faire sera la suivante. Il
va


falloir aller dans le code de tes macros
(outil/macro/macro sélectionne la macro qui
t'intéresse


et fais "modifier"). ensuite, il faut que tu repères
quelle est la partie "active" de ta macro (la partie du
code qui fait vraiment quelque chose) et la partie qui
sélectionne l'endroit de ton fichier qui va être
modifié.


Il faudra ensuite modifier cette dernière de façon à ce
qu'elle soit plus souple (je t'expliquerai comment
quand


tu m'auras donné plus de détails).


Je souhaite maintenant:
- créer une "super" macro qui exécute les 2 macros
(conversion, puis

encadrement)
- et si possible (?) faire exécuter cette "super" macro
automatiquement

à l'ouverture d'un fichier csv

C'est jouable ?

.




Avatar
EricP
Et si je structurais le nom des fichiers csv qui sont concernés par
cette "super" macro ?
Exemple: ces fichiers (et eux seuls) contiendraient la chaine de
caractères "_eric_", en début ou en fin de nom.
Est-ce que c'est une information récupérable dans une macro?
Cordialement,
Eric

Pour la super-macro, pas de pb: en supposant que tu aies
appellé ta deuxième macro "tracer_bordures", tu vas sur
outil/macro/macro, tu sélectionnes ta PREMIERE macro, tu
vas tout à la fin du code (juste avant end sub qui
délimite la fin de la macro) et tu écris: tracer_bordures
(pas de guillemets ou de parenthèses, juste le nom de la
macro) sur une ligne vide.

Pour le lancement automatique, c'est un peu plus
compliqué. Je vois ce que je peux faire.


Avatar
Chris MICHEL
Jette un coup d'oeil dans les questions plus récentes du
forum, j'ai demandé si qqun avait une méthode pour
résoudre ton pb. Il y a eu une réponse qui ne fonctionne
pas sur mon ordi, mais c'est peut-être dû à la
configuration adoptée par ma boite. Tu peux peut-être
l'essayer.

Sinon, ton idée n'est pas mauvaise. Imaginons que tous tes
fichiers csv commencent par eric, tu pourrais alors
essayer ça dans le code du module ThisWorkBook de PERSO.xls
(dans Visual Basic Editor, dans le petit explorateur de
projet à gauche):

sub Workbook_open()
If left(activeworkbook.name,4)="eric" then
'nom de la super macro
End If
end sub

Par contre, cela ne marchera que si Excel est fermé quand
tu ouvres ton fichier CSV (la macro ci-dessus nes'éxécute
que quand Perso.xls s'ouvre, à l'ouverture d'Excel). Il
faut aussi que ta "super macro" soit enregistrée dans
Perso.xls

Tu devras tester la dite solution toi-même car elle ne
marche pas chez moi, mais qu'elle pourrait marcher chez
toi.

Tins-moi au courant,

Chris.



-----Message d'origine-----
Et si je structurais le nom des fichiers csv qui sont
concernés par

cette "super" macro ?
Exemple: ces fichiers (et eux seuls) contiendraient la
chaine de

caractères "_eric_", en début ou en fin de nom.
Est-ce que c'est une information récupérable dans une
macro?

Cordialement,
Eric

Pour la super-macro, pas de pb: en supposant que tu
aies


appellé ta deuxième macro "tracer_bordures", tu vas sur
outil/macro/macro, tu sélectionnes ta PREMIERE macro,
tu


vas tout à la fin du code (juste avant end sub qui
délimite la fin de la macro) et tu écris:
tracer_bordures


(pas de guillemets ou de parenthèses, juste le nom de
la


macro) sur une ligne vide.

Pour le lancement automatique, c'est un peu plus
compliqué. Je vois ce que je peux faire.


.




Avatar
Chris MICHEL
Je te réponds là, ça sera plus pratique que de redescndre
tout en bas. Je t'avais mis une solution potentielle tout
en bas, mais je viens de comprendre qu'elle ne
fonctionnerait pas.

en fiat, le pb, c'est que ma solution (et celle nettement
plus perfectionnée que m'a communiquée un des gros balèzes
du forum), c'est qu'on essaie de faire s'éxécuter une
macro à l'ouverture d'un classeur Excel et que le logiciel
ne considère pas un csv comme un workbook. En tous les
cas, sur Excel 97, ça ne marche pas. Tu peux toujours
essayer sur ton ordi pour voir si ça marche, mais ceal
m'étonnerait. Je continue de chercher.

Chris.
-----Message d'origine-----
Bonjour,

Systématiquement, un double-clic sur un fichier csv
génère l'ouverture

d'Excel (çà, je sais faire) puis il faut faire:
- sélection de la colonne A
- Données / Convertir
- assistant de conversion (3 écrans)

1°) Y a t'il moyen d'automatiser cette séquence de
manipulations ?


2°) Dans le cas où l'on a récupéré un tableau, il faut
faire:

- sélection des données
- clic sur l'icône Bordures
- choix d'une bordure (au minimum)

Y a t'il moyen, là aussi, d'automatiser cette séquence de
manip. ?



J'ai cherché un peu partout: je n'ai pas trouvé de
réponse ...


Merci d'avance,

EricP

.



Avatar
Chris MICHEL
Ca y est! Soluce trouvée par Alain Cros, adaptant un code
de Frédéric Sigonneau:

Dans Perso.xls (il faut que tu sois dans visual basic
editor), tu insères un module de classe et tu le renommes
ExcelPerso (tu affiches les propriétés du module et tu
modifies le nom). Dedans: tu inscris le code suivant:

Public WithEvents AppXl As Application
'code de F. Sigonneau et A. Cros
Private Fichier$

Private Sub AppXl_WorkbookActivate(ByVal Wb As
Excel.Workbook)
If Right(Wb.Name, 4) = ".csv" Or Right(Wb.Name, 4)
= ".CSV" Then
If Fichier = "" Then
MsgBox "coucou" 'vire ça et mets le nom de ta macro
Fichier = Wb.Name
End If
End If
End Sub

Private Sub AppXl_WorkbookBeforeClose(ByVal Wb As
Excel.Workbook, Cancel As Boolean)
If Wb.Name = Fichier Then Fichier = ""
End Sub


Puis, tu vas, toujours dans PERSO.xls, dans le
ThisWorkbook et là tu colles le code suivant:

Dim MonXL As New ExcelPerso

Private Sub Workbook_Open()
Set MonXL.AppXl = Application
End Sub

Voila!

Chris.
-----Message d'origine-----
Je te réponds là, ça sera plus pratique que de redescndre
tout en bas. Je t'avais mis une solution potentielle tout
en bas, mais je viens de comprendre qu'elle ne
fonctionnerait pas.

en fiat, le pb, c'est que ma solution (et celle nettement
plus perfectionnée que m'a communiquée un des gros
balèzes

du forum), c'est qu'on essaie de faire s'éxécuter une
macro à l'ouverture d'un classeur Excel et que le
logiciel

ne considère pas un csv comme un workbook. En tous les
cas, sur Excel 97, ça ne marche pas. Tu peux toujours
essayer sur ton ordi pour voir si ça marche, mais ceal
m'étonnerait. Je continue de chercher.

Chris.
-----Message d'origine-----
Bonjour,

Systématiquement, un double-clic sur un fichier csv
génère l'ouverture

d'Excel (çà, je sais faire) puis il faut faire:
- sélection de la colonne A
- Données / Convertir
- assistant de conversion (3 écrans)

1°) Y a t'il moyen d'automatiser cette séquence de
manipulations ?


2°) Dans le cas où l'on a récupéré un tableau, il faut
faire:

- sélection des données
- clic sur l'icône Bordures
- choix d'une bordure (au minimum)

Y a t'il moyen, là aussi, d'automatiser cette séquence
de


manip. ?


J'ai cherché un peu partout: je n'ai pas trouvé de
réponse ...


Merci d'avance,

EricP

.

.





Avatar
EricP
Résumé des posts précédants:

Lors d'un double-clic sur un fichier .csv, je souhaitais automatiser la
convertion des données et la mise en forme du tableau généré (bordurage
et largeur de colonnes)

Chris a fourni une réponse le 11/02 en utilisant 1 macro: c'est parfait.
Mais çà oblige l'utilisateur à faire CTRL+ qqchose ...

On essaye maintenant d'aller plus loin:
Ma demande étant spécifique à un nombre limité de fichiers, je peux
distinguer ces fichiers en mettant la même chaîne de caractères ( 'eric'
par exemple) dans leur nom (au début ou à la fin).

Nouvelle question:
Est-il possible de tester l'existence de cette chaine de caractères?
Et si oui, peut-on alors lancer automatiquement la macro de
Conversion/Mise en forme ?
Ainsi, l'utilisateur n'aurait que le double-clic à faire...

Merci d'avance,
Eric



Je te réponds là, ça sera plus pratique que de redescndre
tout en bas. Je t'avais mis une solution potentielle tout
en bas, mais je viens de comprendre qu'elle ne
fonctionnerait pas.

en fiat, le pb, c'est que ma solution (et celle nettement
plus perfectionnée que m'a communiquée un des gros balèzes
du forum), c'est qu'on essaie de faire s'éxécuter une
macro à l'ouverture d'un classeur Excel et que le logiciel
ne considère pas un csv comme un workbook. En tous les
cas, sur Excel 97, ça ne marche pas. Tu peux toujours
essayer sur ton ordi pour voir si ça marche, mais ceal
m'étonnerait. Je continue de chercher.

Chris.


1 2