OVH Cloud OVH Cloud

Macro ouverture de fichier

9 réponses
Avatar
OLS
Bonjour à tous,
Voilà j'ai crée la macro suivante :
************************************************
Sub ouverture_fichier_avec_mise_en_page()

' ouverture du fichier et mise en page

ChDir "C:\temp"
Workbooks.OpenText Filename:="C:\temp\test manquants.txt", Origin:= _
xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, _
1), Array(1, 1), Array(28, 1), Array(29, 1), Array(58, 1), Array(59,
1), Array(68, 1), Array _
(69, 1), Array(74, 1), Array(75, 1), Array(108, 1), Array(109, 1),
Array(118, 1), Array(119 _
, 1), Array(128, 1), Array(129, 1), Array(138, 1), Array(139, 1),
Array(148, 1), Array(149, _
1), Array(158, 1), Array(159, 1), Array(171, 1), Array(172, 1),
Array(197, 1), Array(198, 1 _
)), TrailingMinusNumbers:=True
Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U,W:W,Y:Y").Select
Range("Y1").Activate

Selection.Delete Shift:=xlToLeft

Columns("A:L").Select
Columns("A:L").EntireColumn.AutoFit
Rows("1:3").Select
Selection.Delete Shift:=xlUp
Range("B1").Select
ActiveCell.FormulaR1C1 = "RECAPITULATIF DES MANQUANTS MOBILIER"
Range("A1").Select

End Sub
***********************************
J'ouvre donc un fichier nommé testmanquants dans un répertoire spécifique
puis je le mets en page car c'est un .txt.
J'aimerai faire quelquechose de plus général à savoir qu'en lançant la
macro, la boite de dialogue "Ouvrir" s'ouvre et que l'utilisateur ensuite
choisisse le fichier à mettre en page. Une fois le fichier choisit, la mise
en page s'effectue.

Merci pour vos réponses.

Codialement
--
OLS

9 réponses

Avatar
Joël
Bonjour,

Dim MonFichier As String
MonFichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If MonFichier = Faux Then
msgbos "Aucun Fichier Sélectionné"
Exit Sub
End If


--


Bien Cordialement

Joël GARBE
+33 6 60 58 20 68

"OLS" a écrit dans le message de news:
boin8u$rcm$
Bonjour à tous,
Voilà j'ai crée la macro suivante :
************************************************
Sub ouverture_fichier_avec_mise_en_page()

' ouverture du fichier et mise en page

ChDir "C:temp"
Workbooks.OpenText Filename:="C:temptest manquants.txt", Origin:= _
xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0,
_

1), Array(1, 1), Array(28, 1), Array(29, 1), Array(58, 1),
Array(59,

1), Array(68, 1), Array _
(69, 1), Array(74, 1), Array(75, 1), Array(108, 1), Array(109, 1),
Array(118, 1), Array(119 _
, 1), Array(128, 1), Array(129, 1), Array(138, 1), Array(139, 1),
Array(148, 1), Array(149, _
1), Array(158, 1), Array(159, 1), Array(171, 1), Array(172, 1),
Array(197, 1), Array(198, 1 _
)), TrailingMinusNumbers:=True
Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U,W:W,Y:Y").Select
Range("Y1").Activate

Selection.Delete Shift:=xlToLeft

Columns("A:L").Select
Columns("A:L").EntireColumn.AutoFit
Rows("1:3").Select
Selection.Delete Shift:=xlUp
Range("B1").Select
ActiveCell.FormulaR1C1 = "RECAPITULATIF DES MANQUANTS MOBILIER"
Range("A1").Select

End Sub
***********************************
J'ouvre donc un fichier nommé testmanquants dans un répertoire spécifique
puis je le mets en page car c'est un .txt.
J'aimerai faire quelquechose de plus général à savoir qu'en lançant la
macro, la boite de dialogue "Ouvrir" s'ouvre et que l'utilisateur ensuite
choisisse le fichier à mettre en page. Une fois le fichier choisit, la
mise

en page s'effectue.

Merci pour vos réponses.

Codialement
--
OLS




Avatar
OLS
Euh, et où et comment j'insère la mise en page ?
Cordialement
"Joël" a écrit dans le message de news:
boinnp$u5e$
Bonjour,

Dim MonFichier As String
MonFichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If MonFichier = Faux Then
msgbos "Aucun Fichier Sélectionné"
Exit Sub
End If


--


Bien Cordialement

Joël GARBE
+33 6 60 58 20 68

"OLS" a écrit dans le message de news:
boin8u$rcm$
Bonjour à tous,
Voilà j'ai crée la macro suivante :
************************************************
Sub ouverture_fichier_avec_mise_en_page()

' ouverture du fichier et mise en page

ChDir "C:temp"
Workbooks.OpenText Filename:="C:temptest manquants.txt", Origin: _
xlWindows, StartRow:=1, DataType:=xlFixedWidth,
FieldInfo:=Array(Array(0,


_
1), Array(1, 1), Array(28, 1), Array(29, 1), Array(58, 1),
Array(59,

1), Array(68, 1), Array _
(69, 1), Array(74, 1), Array(75, 1), Array(108, 1), Array(109,
1),


Array(118, 1), Array(119 _
, 1), Array(128, 1), Array(129, 1), Array(138, 1), Array(139,
1),


Array(148, 1), Array(149, _
1), Array(158, 1), Array(159, 1), Array(171, 1), Array(172, 1),
Array(197, 1), Array(198, 1 _
)), TrailingMinusNumbers:=True
Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U,W:W,Y:Y").Select
Range("Y1").Activate

Selection.Delete Shift:=xlToLeft

Columns("A:L").Select
Columns("A:L").EntireColumn.AutoFit
Rows("1:3").Select
Selection.Delete Shift:=xlUp
Range("B1").Select
ActiveCell.FormulaR1C1 = "RECAPITULATIF DES MANQUANTS MOBILIER"
Range("A1").Select

End Sub
***********************************
J'ouvre donc un fichier nommé testmanquants dans un répertoire
spécifique


puis je le mets en page car c'est un .txt.
J'aimerai faire quelquechose de plus général à savoir qu'en lançant la
macro, la boite de dialogue "Ouvrir" s'ouvre et que l'utilisateur
ensuite


choisisse le fichier à mettre en page. Une fois le fichier choisit, la
mise

en page s'effectue.

Merci pour vos réponses.

Codialement
--
OLS








Avatar
Joël
Re -

D'accord, j'ai été un peu rapide.

Si j'ai bien tout compris : !!!

Sub ouverture_fichier_avec_mise_en_page()

' ouverture du fichier et mise en page
'=========================================== Dim MonFichier As String
MonFichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If MonFichier = Faux Then
msgbos "Aucun Fichier Sélectionné"
Exit Sub
End If
'============================================= Workbooks.OpenText Filename:=MonFichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, _
1), Array(1, 1), Array(28, 1), Array(29, 1), Array(58, 1), Array(59,
1), Array(68, 1), Array _
(69, 1), Array(74, 1), Array(75, 1), Array(108, 1), Array(109, 1),
Array(118, 1), Array(119 _
, 1), Array(128, 1), Array(129, 1), Array(138, 1), Array(139, 1),
Array(148, 1), Array(149, _
1), Array(158, 1), Array(159, 1), Array(171, 1), Array(172, 1),
Array(197, 1), Array(198, 1 _
)), TrailingMinusNumbers:=True
Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U,W:W,Y:Y").Select
Range("Y1").Activate

Selection.Delete Shift:=xlToLeft

Columns("A:L").Select
Columns("A:L").EntireColumn.AutoFit
Rows("1:3").Select
Selection.Delete Shift:=xlUp
Range("B1").Select
ActiveCell.FormulaR1C1 = "RECAPITULATIF DES MANQUANTS MOBILIER"
Range("A1").Select

End Sub


--


Bien Cordialement

Joël GARBE
+33 6 60 58 20 68

"OLS" a écrit dans le message de news:
boiof4$s5s$
Euh, et où et comment j'insère la mise en page ?
Cordialement
"Joël" a écrit dans le message de news:
boinnp$u5e$
Bonjour,

Dim MonFichier As String
MonFichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If MonFichier = Faux Then
msgbos "Aucun Fichier Sélectionné"
Exit Sub
End If


--


Bien Cordialement

Joël GARBE
+33 6 60 58 20 68

"OLS" a écrit dans le message de news:
boin8u$rcm$
Bonjour à tous,
Voilà j'ai crée la macro suivante :
************************************************
Sub ouverture_fichier_avec_mise_en_page()

' ouverture du fichier et mise en page

ChDir "C:temp"
Workbooks.OpenText Filename:="C:temptest manquants.txt",
Origin: > _



xlWindows, StartRow:=1, DataType:=xlFixedWidth,
FieldInfo:=Array(Array(0,


_
1), Array(1, 1), Array(28, 1), Array(29, 1), Array(58, 1),
Array(59,

1), Array(68, 1), Array _
(69, 1), Array(74, 1), Array(75, 1), Array(108, 1), Array(109,
1),


Array(118, 1), Array(119 _
, 1), Array(128, 1), Array(129, 1), Array(138, 1), Array(139,
1),


Array(148, 1), Array(149, _
1), Array(158, 1), Array(159, 1), Array(171, 1), Array(172,
1),



Array(197, 1), Array(198, 1 _
)), TrailingMinusNumbers:=True

Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U,W:W,Y:Y").Select



Range("Y1").Activate

Selection.Delete Shift:=xlToLeft

Columns("A:L").Select
Columns("A:L").EntireColumn.AutoFit
Rows("1:3").Select
Selection.Delete Shift:=xlUp
Range("B1").Select
ActiveCell.FormulaR1C1 = "RECAPITULATIF DES MANQUANTS MOBILIER"
Range("A1").Select

End Sub
***********************************
J'ouvre donc un fichier nommé testmanquants dans un répertoire
spécifique


puis je le mets en page car c'est un .txt.
J'aimerai faire quelquechose de plus général à savoir qu'en lançant la
macro, la boite de dialogue "Ouvrir" s'ouvre et que l'utilisateur
ensuite


choisisse le fichier à mettre en page. Une fois le fichier choisit, la
mise

en page s'effectue.

Merci pour vos réponses.

Codialement
--
OLS












Avatar
Joël
Re-

Il faut lire MsgBox et non msgbos... mais tu avais corrigé toi-même ;-)

--


Bien Cordialement

Joël GARBE
+33 6 60 58 20 68

"Joël" a écrit dans le message de news:
boiopf$i0f$
Re -

D'accord, j'ai été un peu rapide.

Si j'ai bien tout compris : !!!

Sub ouverture_fichier_avec_mise_en_page()

' ouverture du fichier et mise en page
'=========================================== > Dim MonFichier As String
MonFichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If MonFichier = Faux Then
msgbos "Aucun Fichier Sélectionné"
Exit Sub
End If
'============================================= > Workbooks.OpenText Filename:=MonFichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0,
_

1), Array(1, 1), Array(28, 1), Array(29, 1), Array(58, 1),
Array(59,

1), Array(68, 1), Array _
(69, 1), Array(74, 1), Array(75, 1), Array(108, 1), Array(109, 1),
Array(118, 1), Array(119 _
, 1), Array(128, 1), Array(129, 1), Array(138, 1), Array(139, 1),
Array(148, 1), Array(149, _
1), Array(158, 1), Array(159, 1), Array(171, 1), Array(172, 1),
Array(197, 1), Array(198, 1 _
)), TrailingMinusNumbers:=True
Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U,W:W,Y:Y").Select
Range("Y1").Activate

Selection.Delete Shift:=xlToLeft

Columns("A:L").Select
Columns("A:L").EntireColumn.AutoFit
Rows("1:3").Select
Selection.Delete Shift:=xlUp
Range("B1").Select
ActiveCell.FormulaR1C1 = "RECAPITULATIF DES MANQUANTS MOBILIER"
Range("A1").Select

End Sub


--


Bien Cordialement

Joël GARBE
+33 6 60 58 20 68

"OLS" a écrit dans le message de news:
boiof4$s5s$
Euh, et où et comment j'insère la mise en page ?
Cordialement
"Joël" a écrit dans le message de news:
boinnp$u5e$
Bonjour,

Dim MonFichier As String
MonFichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If MonFichier = Faux Then
msgbos "Aucun Fichier Sélectionné"
Exit Sub
End If


--


Bien Cordialement

Joël GARBE
+33 6 60 58 20 68

"OLS" a écrit dans le message de news:
boin8u$rcm$
Bonjour à tous,
Voilà j'ai crée la macro suivante :
************************************************
Sub ouverture_fichier_avec_mise_en_page()

' ouverture du fichier et mise en page

ChDir "C:temp"
Workbooks.OpenText Filename:="C:temptest manquants.txt",
Origin: > > _



xlWindows, StartRow:=1, DataType:=xlFixedWidth,
FieldInfo:=Array(Array(0,


_
1), Array(1, 1), Array(28, 1), Array(29, 1), Array(58, 1),
Array(59,

1), Array(68, 1), Array _
(69, 1), Array(74, 1), Array(75, 1), Array(108, 1),
Array(109,




1),
Array(118, 1), Array(119 _
, 1), Array(128, 1), Array(129, 1), Array(138, 1),
Array(139,




1),
Array(148, 1), Array(149, _
1), Array(158, 1), Array(159, 1), Array(171, 1), Array(172,
1),



Array(197, 1), Array(198, 1 _
)), TrailingMinusNumbers:=True

Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U,W:W,Y:Y").Select



Range("Y1").Activate

Selection.Delete Shift:=xlToLeft

Columns("A:L").Select
Columns("A:L").EntireColumn.AutoFit
Rows("1:3").Select
Selection.Delete Shift:=xlUp
Range("B1").Select
ActiveCell.FormulaR1C1 = "RECAPITULATIF DES MANQUANTS MOBILIER"
Range("A1").Select

End Sub
***********************************
J'ouvre donc un fichier nommé testmanquants dans un répertoire
spécifique


puis je le mets en page car c'est un .txt.
J'aimerai faire quelquechose de plus général à savoir qu'en lançant
la




macro, la boite de dialogue "Ouvrir" s'ouvre et que l'utilisateur
ensuite


choisisse le fichier à mettre en page. Une fois le fichier choisit,
la




mise
en page s'effectue.

Merci pour vos réponses.

Codialement
--
OLS
















Avatar
OLS
Merci beaucoup pour cette réponse rapide et efficace.
Je vais pouvoir enfin bosser correctement
C'est pas facile le vba pour un débutant.
Faudrait peut être que j'achète un bouquin, l'aide d'excel est pas top je
trouve.
Y a t il un bon bouquin ?

Cordialement
OLS
Avatar
Joël
Re-

Des bouquins, ce n'est pas ce qu'il manque.

Des sources pour progresser :

les différents sites souvent cités sur ce forum.

Le forum lui-même,

Des supports de cours (voir editions ENI ou EDUCATIC, site www du même nom)

Ou encore la collection Microsoft Press

D'autres auront des suggessions différentes ...

Bon courage,
--


Bien Cordialement

Joël GARBE
+33 6 60 58 20 68

"OLS" a écrit dans le message de news:
boipub$d7f$
Merci beaucoup pour cette réponse rapide et efficace.
Je vais pouvoir enfin bosser correctement
C'est pas facile le vba pour un débutant.
Faudrait peut être que j'achète un bouquin, l'aide d'excel est pas top je
trouve.
Y a t il un bon bouquin ?

Cordialement
OLS




Avatar
Michel Gaboly
Bonjour Joël,

Je voudrais ajouter quelques précisions :

Ton code ne marche pas chez moi, car dans les préférences de VBA,
je coche toujours "Déclaration explicite des variables".

J'obtiens donc un erreur de compilation (variable non définie),
à cause de faux qui n'a pas été déclaré.

Si j'enlève le "Option Explicit" en haut du module, le problème de
compil est résolu, car la variable "faux" est créée automatiquement.

Par contre le test ne fonctionne pas si l'utilisateur clique sur le bouton
"Annuler", car MonFichier est égal à "Faux", la chaine de caractères et
non le booléen, à cause de la déclaration comme String, tandis que faux,
la variable créée à la volée est vide, ce que tu peux vétifier avec l'ins-
truction :

Debug.Print "faux :" & faux & " - " & TypeName(faux)


Il faut donc remplacer

If MonFichier = Faux Then

par

If MonFichier = "Faux" Then


Dans ce cas, tout fonctionne, mais ... seulement avec les versions en fran-
çais d'Excel. En effet, quand on clique sur "Annuler", GetOpenFilename
renvoie le booléen FAUX, converti en "Faux" avec une version française,
mais en "False" avec une version en anglais, "Falso", avec une version en
italien ...

C'est pourquoi je déconseille vivement de donner le type String à la variable.
Avec le type Variant attribué par défaut, selon que l'utilisateur choisit un
fichier ou le bouton "Annuler", le résultat est une chaine (String) ou un
booléen (Boolean). le booléen n'est pas converti en String et on peut alors
faire le test :

If MonFichier = Faux Then

qui fonctionne avec toutes les versions d'Excel, quelle que soit la langue.

Voici la version que je propose :

Sub ObtentionNom()
Dim DocChoisi
DocChoisi = Application.GetOpenFilename
If DocChoisi = False Then
' Code pour gérer le bouton Annuler.
End
Else
' Suite "normale" du code
End If
End Sub

avec, j'insiste :

Dim DocChoisi

ou

Dim DocChoisi as Variant

et non

Dim DocChoisi as String



Bonjour,

.

--

Bien Cordialement

Joël GARBE
+33 6 60 58 20 68

"OLS" a écrit dans le message de news:
boin8u$rcm$
Bonjour à tous,
Voilà j'ai crée la macro suivante :
************************************************
Sub ouverture_fichier_avec_mise_en_page()

' ouverture du fichier et mise en page

ChDir "C:temp"
Workbooks.OpenText Filename:="C:temptest manquants.txt", Origin:= _
xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0,
_

1), Array(1, 1), Array(28, 1), Array(29, 1), Array(58, 1),
Array(59,

1), Array(68, 1), Array _
(69, 1), Array(74, 1), Array(75, 1), Array(108, 1), Array(109, 1),
Array(118, 1), Array(119 _
, 1), Array(128, 1), Array(129, 1), Array(138, 1), Array(139, 1),
Array(148, 1), Array(149, _
1), Array(158, 1), Array(159, 1), Array(171, 1), Array(172, 1),
Array(197, 1), Array(198, 1 _
)), TrailingMinusNumbers:=True
Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U,W:W,Y:Y").Select
Range("Y1").Activate

Selection.Delete Shift:=xlToLeft

Columns("A:L").Select
Columns("A:L").EntireColumn.AutoFit
Rows("1:3").Select
Selection.Delete Shift:=xlUp
Range("B1").Select
ActiveCell.FormulaR1C1 = "RECAPITULATIF DES MANQUANTS MOBILIER"
Range("A1").Select

End Sub
***********************************
J'ouvre donc un fichier nommé testmanquants dans un répertoire spécifique
puis je le mets en page car c'est un .txt.
J'aimerai faire quelquechose de plus général à savoir qu'en lançant la
macro, la boite de dialogue "Ouvrir" s'ouvre et que l'utilisateur ensuite
choisisse le fichier à mettre en page. Une fois le fichier choisit, la
mise

en page s'effectue.

Merci pour vos réponses.

Codialement
--
OLS





--
Cordialement,

Michel Gaboly
http://www.gaboly.com


Avatar
Joël
Bonjour Michel !

Merci pour ces précisions...

C'est vrai que je ne teste pas toujours les routines que je propose dans
toutes leurs possibilités, faisant confiance à ma bonne étoile (et par
manque de temps souvant).

Mais bon, ça fait toujours avancer les demandeurs ;-)

--


Bien Cordialement

Joël GARBE
+33 6 60 58 20 68

www.joelgarbe.fr
(très petit contenu)
"Michel Gaboly" a écrit dans le message de news:

Bonjour Joël,

Je voudrais ajouter quelques précisions :

Ton code ne marche pas chez moi, car dans les préférences de VBA,
je coche toujours "Déclaration explicite des variables".

J'obtiens donc un erreur de compilation (variable non définie),
à cause de faux qui n'a pas été déclaré.

Si j'enlève le "Option Explicit" en haut du module, le problème de
compil est résolu, car la variable "faux" est créée automatiquement.

Par contre le test ne fonctionne pas si l'utilisateur clique sur le bouton
"Annuler", car MonFichier est égal à "Faux", la chaine de caractères et
non le booléen, à cause de la déclaration comme String, tandis que faux,
la variable créée à la volée est vide, ce que tu peux vétifier avec l'ins-
truction :

Debug.Print "faux :" & faux & " - " & TypeName(faux)


Il faut donc remplacer

If MonFichier = Faux Then

par

If MonFichier = "Faux" Then


Dans ce cas, tout fonctionne, mais ... seulement avec les versions en
fran-

çais d'Excel. En effet, quand on clique sur "Annuler", GetOpenFilename
renvoie le booléen FAUX, converti en "Faux" avec une version française,
mais en "False" avec une version en anglais, "Falso", avec une version en
italien ...

C'est pourquoi je déconseille vivement de donner le type String à la
variable.

Avec le type Variant attribué par défaut, selon que l'utilisateur choisit
un

fichier ou le bouton "Annuler", le résultat est une chaine (String) ou un

booléen (Boolean). le booléen n'est pas converti en String et on peut
alors

faire le test :

If MonFichier = Faux Then

qui fonctionne avec toutes les versions d'Excel, quelle que soit la
langue.


Voici la version que je propose :

Sub ObtentionNom()
Dim DocChoisi
DocChoisi = Application.GetOpenFilename
If DocChoisi = False Then
' Code pour gérer le bouton Annuler.
End
Else
' Suite "normale" du code
End If
End Sub

avec, j'insiste :

Dim DocChoisi

ou

Dim DocChoisi as Variant

et non

Dim DocChoisi as String



Bonjour,

.

--

Bien Cordialement

Joël GARBE
+33 6 60 58 20 68

"OLS" a écrit dans le message de news:
boin8u$rcm$
Bonjour à tous,
Voilà j'ai crée la macro suivante :
************************************************
Sub ouverture_fichier_avec_mise_en_page()

' ouverture du fichier et mise en page

ChDir "C:temp"
Workbooks.OpenText Filename:="C:temptest manquants.txt",
Origin:= _



xlWindows, StartRow:=1, DataType:=xlFixedWidth,
FieldInfo:=Array(Array(0,



_
1), Array(1, 1), Array(28, 1), Array(29, 1), Array(58, 1),
Array(59,

1), Array(68, 1), Array _
(69, 1), Array(74, 1), Array(75, 1), Array(108, 1), Array(109,
1),



Array(118, 1), Array(119 _
, 1), Array(128, 1), Array(129, 1), Array(138, 1), Array(139,
1),



Array(148, 1), Array(149, _
1), Array(158, 1), Array(159, 1), Array(171, 1), Array(172,
1),



Array(197, 1), Array(198, 1 _
)), TrailingMinusNumbers:=True

Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U,W:W,Y:Y").Select



Range("Y1").Activate

Selection.Delete Shift:=xlToLeft

Columns("A:L").Select
Columns("A:L").EntireColumn.AutoFit
Rows("1:3").Select
Selection.Delete Shift:=xlUp
Range("B1").Select
ActiveCell.FormulaR1C1 = "RECAPITULATIF DES MANQUANTS MOBILIER"
Range("A1").Select

End Sub
***********************************
J'ouvre donc un fichier nommé testmanquants dans un répertoire
spécifique



puis je le mets en page car c'est un .txt.
J'aimerai faire quelquechose de plus général à savoir qu'en lançant la
macro, la boite de dialogue "Ouvrir" s'ouvre et que l'utilisateur
ensuite



choisisse le fichier à mettre en page. Une fois le fichier choisit, la
mise

en page s'effectue.

Merci pour vos réponses.

Codialement
--
OLS





--
Cordialement,

Michel Gaboly
http://www.gaboly.com






Avatar
Michel Gaboly
;-)))


Bonjour Michel !

Merci pour ces précisions...

C'est vrai que je ne teste pas toujours les routines que je propose dans
toutes leurs possibilités, faisant confiance à ma bonne étoile (et par
manque de temps souvant).

Mais bon, ça fait toujours avancer les demandeurs ;-)

--

Bien Cordialement

Joël GARBE
+33 6 60 58 20 68

www.joelgarbe.fr
(très petit contenu)
"Michel Gaboly" a écrit dans le message de news:

Bonjour Joël,

Je voudrais ajouter quelques précisions :

Ton code ne marche pas chez moi, car dans les préférences de VBA,
je coche toujours "Déclaration explicite des variables".

J'obtiens donc un erreur de compilation (variable non définie),
à cause de faux qui n'a pas été déclaré.

Si j'enlève le "Option Explicit" en haut du module, le problème de
compil est résolu, car la variable "faux" est créée automatiquement.

Par contre le test ne fonctionne pas si l'utilisateur clique sur le bouton
"Annuler", car MonFichier est égal à "Faux", la chaine de caractères et
non le booléen, à cause de la déclaration comme String, tandis que faux,
la variable créée à la volée est vide, ce que tu peux vétifier avec l'ins-
truction :

Debug.Print "faux :" & faux & " - " & TypeName(faux)


Il faut donc remplacer

If MonFichier = Faux Then

par

If MonFichier = "Faux" Then


Dans ce cas, tout fonctionne, mais ... seulement avec les versions en
fran-

çais d'Excel. En effet, quand on clique sur "Annuler", GetOpenFilename
renvoie le booléen FAUX, converti en "Faux" avec une version française,
mais en "False" avec une version en anglais, "Falso", avec une version en
italien ...

C'est pourquoi je déconseille vivement de donner le type String à la
variable.

Avec le type Variant attribué par défaut, selon que l'utilisateur choisit
un

fichier ou le bouton "Annuler", le résultat est une chaine (String) ou un

booléen (Boolean). le booléen n'est pas converti en String et on peut
alors

faire le test :

If MonFichier = Faux Then

qui fonctionne avec toutes les versions d'Excel, quelle que soit la
langue.


Voici la version que je propose :

Sub ObtentionNom()
Dim DocChoisi
DocChoisi = Application.GetOpenFilename
If DocChoisi = False Then
' Code pour gérer le bouton Annuler.
End
Else
' Suite "normale" du code
End If
End Sub

avec, j'insiste :

Dim DocChoisi

ou

Dim DocChoisi as Variant

et non

Dim DocChoisi as String



Bonjour,

.

--

Bien Cordialement

Joël GARBE
+33 6 60 58 20 68

"OLS" a écrit dans le message de news:
boin8u$rcm$
Bonjour à tous,
Voilà j'ai crée la macro suivante :
************************************************
Sub ouverture_fichier_avec_mise_en_page()

' ouverture du fichier et mise en page

ChDir "C:temp"
Workbooks.OpenText Filename:="C:temptest manquants.txt",
Origin:= _



xlWindows, StartRow:=1, DataType:=xlFixedWidth,
FieldInfo:=Array(Array(0,



_
1), Array(1, 1), Array(28, 1), Array(29, 1), Array(58, 1),
Array(59,

1), Array(68, 1), Array _
(69, 1), Array(74, 1), Array(75, 1), Array(108, 1), Array(109,
1),



Array(118, 1), Array(119 _
, 1), Array(128, 1), Array(129, 1), Array(138, 1), Array(139,
1),



Array(148, 1), Array(149, _
1), Array(158, 1), Array(159, 1), Array(171, 1), Array(172,
1),



Array(197, 1), Array(198, 1 _
)), TrailingMinusNumbers:=True

Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U,W:W,Y:Y").Select



Range("Y1").Activate

Selection.Delete Shift:=xlToLeft

Columns("A:L").Select
Columns("A:L").EntireColumn.AutoFit
Rows("1:3").Select
Selection.Delete Shift:=xlUp
Range("B1").Select
ActiveCell.FormulaR1C1 = "RECAPITULATIF DES MANQUANTS MOBILIER"
Range("A1").Select

End Sub
***********************************
J'ouvre donc un fichier nommé testmanquants dans un répertoire
spécifique



puis je le mets en page car c'est un .txt.
J'aimerai faire quelquechose de plus général à savoir qu'en lançant la
macro, la boite de dialogue "Ouvrir" s'ouvre et que l'utilisateur
ensuite



choisisse le fichier à mettre en page. Une fois le fichier choisit, la
mise

en page s'effectue.

Merci pour vos réponses.

Codialement
--
OLS





--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com