Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1653 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro excel fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Macro excel fichier

n°1184243
made37
Posté le 25-08-2005 à 14:20:56  profilanswer
 

Bonjour,
 
Voici un bout de ma macro excel et je voudrais faire une boucle qui me permette de choisir combien de fichier .plot j'ouvre et au lieu de faire des copier coller basiques en fontion du nombre de fichier que je veux ouvrir puis d'importer les données. Ensuite je copier toute mes feuilles dans un classeur pour des graphs !
 
Merci pour votre aide.
MaDe
 :??:  
P.S. : bon saussi pour manipuler via macro des cellules avec du texte.
 
 

Code :
  1. fileToOpen = Application _
  2.     .GetOpenFilename("Plot Files (*.plot), *.plot" )
  3.     Workbooks.OpenText Filename:=fileToOpen, Origin:=xlWindows _
  4.         , StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
  5.         ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _
  6.         Space:=True, Other:=False, FieldInfo:=Array(Array(1, 9), Array(2, 1), Array(3 _
  7.         , 1), Array(4, 1), Array(5, 1), Array(6, 1))
  8.     Cells.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
  9.         :=xlByRows, MatchCase:=False
  10.     Sheets("gas" ).Select
  11.     Sheets("gas" ).Name = "gas_1"
  12.     Sheets("gas_1" ).Move After:=Workbooks("classeur_pour_macro.xls" ).Sheets(1)
  13.    
  14.     fileToOpen = Application _
  15.     .GetOpenFilename("Plot Files (*.plot), *.plot" )
  16.     Workbooks.OpenText Filename:=fileToOpen, Origin:=xlWindows _
  17.         , StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
  18.         ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _
  19.         Space:=True, Other:=False, FieldInfo:=Array(Array(1, 9), Array(2, 1), Array(3 _
  20.         , 1), Array(4, 1), Array(5, 1), Array(6, 1))
  21.     Cells.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
  22.         :=xlByRows, MatchCase:=False
  23.     Sheets("gas" ).Select
  24.     Sheets("gas" ).Name = "gas_2"
  25.     Sheets("gas_2" ).Move After:=Workbooks("classeur_pour_macro.xls" ).Sheets(2)

mood
Publicité
Posté le 25-08-2005 à 14:20:56  profilanswer
 

n°1184887
GuiGui013
Posté le 26-08-2005 à 10:01:45  profilanswer
 

Il te faut faire un InputBox qui te demanderait de saisir le nombre de fois que tu veux répéter l'opération.
 
Puis d'ajouter un

Code :
  1. For a = 1 to x

(récupéré de l'InputBox)

n°1184916
watashi
La démotivation : JAMAIS !
Posté le 26-08-2005 à 10:24:19  profilanswer
 

Salut made37,
 
Une boucle qui irait bien pour ton cas c'est Do... Loop While, avec une variable public qui te permettrait de poser le nom de tes feuilles gas_A en variable, et une variable i pour demander si un autre fichier est à traiter

Public A as integer
 
sub lancement()
dim i
A=1
Do
  ton traitement (ouverture de fichier, copie de feuille)
  (c'est la que Sheets("gas" ).name = "gas_" & A)
  (et ton Sheets("gas_2" ).Move After:=Workbooks("classeur_pour_macro.xls" ).Sheets(2) devient Sheets("gas_" & A).Move After:=Workbooks("classeur_pour_macro.xls" ).Sheets(A))
 
  i=""
  i= msgbox("Un autre fichier ?", vbquestion + vbyesno)
  A = A + 1
Loop While i = 6 '6 est la valeur de retour pour le click sur yes


 
bon courage

n°1185017
made37
Posté le 26-08-2005 à 11:39:42  profilanswer
 

pas bete vos conseils !   :bounce:  
 
on m'a proposé ca aussi :)
mais la do while est sympa je trouve avec le choix en direct :)  :love:  
 

Code :
  1. For i = 1 To 10
  2. fileToOpen = Application _
  3.      .GetOpenFilename("Plot Files (*.plot), *.plot" )
  4. Workbooks.OpenText Filename:=fileToOpen, Origin:=xlWindows _
  5.          , StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
  6.          ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _
  7.          Space:=True, Other:=False, FieldInfo:=Array(Array(1, 9), Array(2, 1), Array(3 _
  8.          , 1), Array(4, 1), Array(5, 1), Array(6, 1))
  9.      Cells.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
  10.          :=xlByRows, MatchCase:=False
  11.      Sheets("gas" ).Select
  12.      Sheets("gas" ).Name = "gas_" & i
  13.      Sheets("gas_1" ).Move After:=Workbooks("classeur_pour_macro.xls" ).Sheets(i)
  14. Next
  15. 'et celle ci,
  16. For i = 1 To 6
  17.      Windows("Classeur_pour_macro.xls" ).Activate
  18.      Sheets("gas_" & i).Select
  19.      Sheets("gas_" & i).Copy After:=Workbooks("traitement_essai.xls" ).Sheets(i)
  20. Next
  21. 'et celle ci
  22.   For i = 1 To 6
  23.      Sheets("gas_" & i).Select
  24.      For y = 2 To 10 Step 2
  25.          Columns(y).Insert Shift:=xlToRight
  26.          Cells(2, y).FormulaR1C1 = "=RC[-1]*10^-5"
  27.          Cells(2, y).AutoFill Destination:=Range(Cells(2, y), Cells(543, y)), Type:=xlFillDefault
  28.          Range(Cells(2, y), Cells(543, y)).NumberFormat = "0.00"
  29.      Next
  30.   Next


 

n°1185336
watashi
La démotivation : JAMAIS !
Posté le 26-08-2005 à 14:55:37  profilanswer
 

Salut made37
 

made37 a écrit :

For i = 1 To 10
fileToOpen = Application _
     .GetOpenFilename("Plot Files (*.plot), *.plot" )
 
Workbooks.OpenText Filename:=fileToOpen, Origin:=xlWindows _
         , StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
         ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _
         Space:=True, Other:=False, FieldInfo:=Array(Array(1, 9), Array(2, 1), Array(3 _
         , 1), Array(4, 1), Array(5, 1), Array(6, 1))
     Cells.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
         :=xlByRows, MatchCase:=False
 
     Sheets("gas" ).Select
     Sheets("gas" ).Name = "gas_" & i
     Sheets("gas_1" ).Move After:=Workbooks("classeur_pour_macro.xls" ).Sheets(i)
Next


Cette macro-ci répond au problème que tu as posé mais me semble "délicate" pour 2 raisons :
1- tu es limité à 10 fichiers... (il vaudrait mieux for i= 1 to X et faire décider du X(nombre de fichiers) grace à une imput box comme proposé par guigui13
2- Comment va réagir la macros si tu as moins de 10 fichiers ?  
 

made37 a écrit :


For i = 1 To 6
     Windows("Classeur_pour_macro.xls" ).Activate
     Sheets("gas_" & i).Select
     Sheets("gas_" & i).Copy After:=Workbooks("traitement_essai.xls" ).Sheets(i)
Next


 
Cette macro-là ne sert qu'à copier 6 fois la feuille "gas" d'un classeur excel unique et défini dans la macro dans un classeur unique et défini dans la macro (la même feuille aura un numéro de gas_1 à gas_6)
 

made37 a écrit :

For i = 1 To 6
     Sheets("gas_" & i).Select
     For y = 2 To 10 Step 2
         Columns(y).Insert Shift:=xlToRight
         Cells(2, y).FormulaR1C1 = "=RC[-1]*10^-5"
         Cells(2, y).AutoFill Destination:=Range(Cells(2, y), Cells(543, y)), Type:=xlFillDefault
         Range(Cells(2, y), Cells(543, y)).NumberFormat = "0.00"
     Next


 
Cette macro là ne répond pas du tout au problème, j'en conclu que c'est la macro de traitement pour préparer tes graphiques...
 
bon courage

n°1185415
made37
Posté le 26-08-2005 à 15:29:35  profilanswer
 

oui j'ai encore du boulot, mais je suis vriament newbies :)

n°1185720
made37
Posté le 26-08-2005 à 21:08:37  profilanswer
 

j'ai un souci avec mes remplacement de "." en ",". il me transforme avec une *10^-5 des nombres
 
iitiale ma variable = 1.000E00 et apres le replace ca donne 1E5.
 
Merci encore.

n°1186720
guendalf
Posté le 29-08-2005 à 09:40:09  profilanswer
 

Heu... tu fais quoi pour remplacer les "." par des "," ??

Code :
  1. Dim nb as Integer
  2. nb = Replace("1,000", ",", "." )
  3. MsgBox "nb = " & nb


---------------
Guendalf
n°1186962
made37
Posté le 29-08-2005 à 12:51:44  profilanswer
 

je fais sur chaque feuille :
 

Code :
  1. Workbooks.OpenText Filename:=fileToOpen, Origin:=xlWindows _
  2.          , StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
  3.          ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _
  4.          Space:=True, Other:=False, FieldInfo:=Array(Array(1, 9), Array(2, 1), Array(3 _
  5.          , 1), Array(4, 1), Array(5, 1), Array(6, 1))
  6.      Cells.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
  7.          :=xlByRows, MatchCase:=False


 
Voila et ches chaint ce 10E5 qui arrive !


Message édité par made37 le 29-08-2005 à 12:52:11
n°1187037
guendalf
Posté le 29-08-2005 à 14:04:36  profilanswer
 

made37 a écrit :

je fais sur chaque feuille :
 

Code :
  1. Workbooks.OpenText Filename:=fileToOpen, Origin:=xlWindows _
  2.          , StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
  3.          ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _
  4.          Space:=True, Other:=False, FieldInfo:=Array(Array(1, 9), Array(2, 1), Array(3 _
  5.          , 1), Array(4, 1), Array(5, 1), Array(6, 1))
  6.      Cells.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
  7.          :=xlByRows, MatchCase:=False


 
Voila et ches chaint ce 10E5 qui arrive !


 
Tu sais qu'il y a un parametre specialement pour definir le separateur de decimal pendant la conversion... :

Code :
  1. DecimalSeparator:="."


 
Donc pas besoin de faire le cells.replace ensuite..


---------------
Guendalf
mood
Publicité
Posté le 29-08-2005 à 14:04:36  profilanswer
 

n°1187073
made37
Posté le 29-08-2005 à 14:41:06  profilanswer
 

je savais pas je vais tester ca voir :)
 
MErci
 
la je galere sur les macro et les graph !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro excel fichier

 

Sujets relatifs
[MACRO ACESS] lancer un fichier Excel depuis AccessMacro graphe Excel données importées de fichier .txt
Faire une macro sur excel pour transformer Fichier WordMacro dans Excel permettant de voir si un fichier est ouvert
creer un fichier excel avec macro en java[VBA] Executer une macro à l ouverture d'un fichier excel [resolu]
executer une macro à l'ouverture d'un fichier excel[Excel] Lancer une macro automatiquement à l'ouverture d'un fichier
Excel: ouvrir dans une macro un fichier xl protege par mot de passeComment sauvegarder une macro Excel dans un fichier *.xla ???
Plus de sujets relatifs à : Macro excel fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR