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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA Excel - resolu] ajout d'une feuille

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA Excel - resolu] ajout d'une feuille

n°1174543
jpcheck
Pioupiou
Posté le 11-08-2005 à 13:35:26  profilanswer
 

Bonjour, c'est encore moi :hello:  
j'aurais voulu savoir qu'elle est la fonction des boite dialogs qui permet non pas d'ouvrir complètement une feuille seule, mais de l'ajouter à un fichier déjà existant.
Je ne trouve en effet pas de site qui les répertorie... :sweat:  
Merci d'avance! :jap:  
JP


Message édité par jpcheck le 11-08-2005 à 14:51:45
mood
Publicité
Posté le 11-08-2005 à 13:35:26  profilanswer
 

n°1174582
watashi
La démotivation : JAMAIS !
Posté le 11-08-2005 à 14:11:16  profilanswer
 

Salut jpcheck
 
Avec une simple msgbox vbyesno tu peux faire ça.

Code :
  1. Sub feuile()
  2. Dim resul As String
  3. resul = MsgBox("Ajouter une feuille ?", vbYesNo)
  4. If resul = 6 Then Sheets.Add
  5. End Sub


Après dans ton then tu peux définir les autres actions (choisir le fichier ou autre...)
 
Yes donne une valeur 6 , No donne une valeur 7
 
C'était bien ça ta question ?
 
bon courage

n°1174600
jpcheck
Pioupiou
Posté le 11-08-2005 à 14:44:20  profilanswer
 

merci pour ton aide watashi. En fait il ne s'agissait pas exactement de ce probleme. Je voulais permettre à l'utilisateur d'importer les données d'une page.
J'ai finalement trouvé un moyen d'y remédier, voici mes lignes de codes :
 

Code :
  1. 'ouverture d'un fichier xls
  2. Application.Dialogs(xlDialogOpen).Show
  3. 'je recopie toutes les valeurs du fichier ouvert dans celui que je veux 
  4. For i = 1 To 50
  5.     For j = 1 To 10
  6.         Workbooks("fichieroujecopie" ).Worksheets("pageoujecopie" ).Cells(i, j).Value = ActiveWorkbook.Worksheets(1).Cells(i, j).Value
  7.     Next j
  8. Next i
  9. 'je ferme le fichier ouvert
  10. ActiveWorkbook.Close


cette méthode fonctionne, mais je n'ai pas blindé les saisies, mais bon,c 'est une autre histoire :pt1cable:

n°1174615
watashi
La démotivation : JAMAIS !
Posté le 11-08-2005 à 15:02:25  profilanswer
 

Ok la question n'était pas vraiment sur l'ajout d'une page ou msgbox...
 
 
Petit truc sur ton code :

Code :
  1. For i = 1 To 50
  2.     For j = 1 To 10
  3.         Workbooks("fichieroujecopie" ).Worksheets("pageoujecopie" ).Cells(i, j).Value = ActiveWorkbook.Worksheets(1).Cells(i, j).Value
  4.     Next j
  5. Next i


T'aurais pas meilleur temps de faire :

Code :
  1. workbooks("fichier_origine" ).activate
  2. worksheets("feuille_origine" ).activate
  3. range("A1:J50" ).select
  4. selection.copy
  5. Workbooks("fichieroujecopie" ).activate
  6. Worksheets("pageoujecopie" ).activate
  7. range("A1" ).select
  8. selection.paste


T'économiserais une boucle qui surcharge souvent les petits programmes.
Par ailleurs si tu tiens à ta boucle utilise plutot un Formula qu'un value pour ta celule de destination, tu seras garanti du résultat
 :ange:  

n°1174631
jpcheck
Pioupiou
Posté le 11-08-2005 à 15:13:53  profilanswer
 


 

Code :
  1. workbooks("fichier_origine" ).activate
  2. worksheets("feuille_origine" ).activate
  3. range("A1:J50" ).select
  4. selection.copy
  5. Workbooks("fichieroujecopie" ).activate
  6. Worksheets("pageoujecopie" ).activate
  7. range("A1" ).select
  8. selection.paste


Cette méthode me plait bien, toutefois, comment récupères tu le fichier_origine? VBE me pond une erruer pour selection.paste

n°1174817
watashi
La démotivation : JAMAIS !
Posté le 11-08-2005 à 18:09:25  profilanswer
 

j'ai bien vu ton message j'aurais pas le temps de voir plus loin avant lundi. Mais si ça peut attendre mardi je regarderais ce weekend car j'ai un problème du même genre à résoudre.
Tu peux parcontre te reseigner sur les fonctions GetOpenFileName, et les filesystemobject.
désolée

n°1176854
watashi
La démotivation : JAMAIS !
Posté le 16-08-2005 à 09:41:48  profilanswer
 

salut jpcheck,
 
donc voilà moi j'avais un autre traitement à faire et je l ai modifié pour ta copie de la plage ("A1:J50" ). je suis sous excel 2002.

Code :
  1. Sub Macro1()
  2. 'sélectioner et ouvrir le fichier origine(source des données)
  3. 'seulement s'il n'est pas ouvert
  4.      Dim wb1, B1, C1, original As Workbook
  5.      wb1 = Application.GetOpenFilename()
  6. 1    B1 = 1
  7.      C1 = ""
  8.      For B1 = 1 To Workbooks.Count
  9.         If Workbooks(B1).FullName = wb1 Then C1 = 1: Set original = Workbooks(B1)
  10.      Next B1
  11.      If C1 = "" Then Workbooks.Open Filename:=wb1: GoTo 1
  12.      original.Activate
  13. 'Sélectionner la feuille des données source
  14.      Dim Source, A1, D1
  15. 2    A1 = 1
  16.      Source = ""
  17.      D1 = ""
  18.      Source = InputBox("Choisir la feuille contenant les données" )
  19.      For A1 = 1 To original.Worksheets.Count
  20.         If Source = Worksheets(A1).Name Then D1 = 1
  21.     Next A1
  22.     If D1 = "" Then MsgBox ("Erreur sur le nom de la feuille" & vbLf & "merci de recommencer !" ): GoTo 2
  23. 'selection du fichier de destination et ourverture
  24. 'seulement s'il n'est pas ouvert
  25.      Dim wb2, B2, C2, Desti As Workbook
  26.      wb2 = Application.GetOpenFilename()
  27. 3    B2 = 1
  28.      C2 = ""
  29.      For B2 = 1 To Workbooks.Count
  30.         If Workbooks(B2).FullName = wb2 Then C2 = 1: Set Desti = Workbooks(B2)
  31.      Next B2
  32.      If C2 = "" Then Workbooks.Open Filename:=wb2: GoTo 3
  33.      Desti.Activate
  34. 'Sélectionner la feuille des données source
  35.      Dim Copie, A2, D2
  36. 4    A2 = 1
  37.      Copie = ""
  38.      D2 = ""
  39.      Copie = InputBox("Choisir la feuille où les données seront copiées" )
  40.      For A2 = 1 To Desti.Worksheets.Count
  41.         If Copie = Desti.Worksheets(A2).Name Then D2 = 1
  42.     Next A2
  43.     If D2 = "" Then MsgBox ("Erreur sur le nom de la feuille" & vbLf & "merci de recommencer !" ): GoTo 4
  44. 'traitement pour la copie des données
  45.     original.Activate
  46.     Worksheets(Source).Activate
  47.     Range("A1:J50" ).Select
  48.     Selection.Copy
  49.     Desti.Activate
  50.     Worksheets(Copie).Activate
  51.     Range("A1" ).Select
  52.     ActiveSheet.Paste
  53. End Sub


J'ai comme références : Visual Basic For Applications
                        Microsoft excel 10.0 object library
                        Microsoft Forms 2.0 Object library
 
@+ et bon courage


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

  [VBA Excel - resolu] ajout d'une feuille

 

Sujets relatifs
[RESOLU] Display: block pour le lien sous IE[RESOLU] -> [FMX/MySQL] GET ou POST??
[Résolu] récupérer un objet au format "time"[SVG] comment mettre à jour Mysql avec un fichier SVG ? [RESOLU]
Cloner un objet Document [résolu : pas possible][Résolu] Pb avec les égalités de chaines
boucle selection condition excelMacro Excel --> Ajouter un caractère
En quoi consiste la compilation sur VBA (Excel) 
Plus de sujets relatifs à : [VBA Excel - resolu] ajout d'une feuille


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