Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : VB6 et ajouter une feuille à un classeur Excel. [ Système / Fichier & Disque ] (LIBRE_MAX)

mardi 1 juillet 2008 à 18:28:18 | VB6 et ajouter une feuille à un classeur Excel.

LIBRE_MAX

Salut,
Sous VB6 et dans une routine qui me permet d' envoyer des
données vers un classeur Excel, j' ai ceci:

Sub ENVOYER()

'OUVRIR LA TABLE

    Dim rs As Recordset
    Set rs = pDB.OpenRecordset("INSCRIPTIONS", dbOpenDynaset)

'- Ouvrir un fichier Excel
'Déclaration des variables
    Dim appExcel As Excel.Application 'Application Excel
    Dim wbExcel As Excel.Workbook 'Classeur Excel
    Dim wsExcel As Excel.Worksheet 'Feuille Excel

'Ouverture de l'application
    Set appExcel = CreateObject("Excel.Application")
  'Ouverture d'un fichier Excel
    Set wbExcel = appExcel.Workbooks.Open(App.Path & "\NXLS.xls")

rs.MoveFirst
Dim i As Integer, y As Integer, xPage As Integer

  y = 0
   xPage = 1
  'wsExcel correspond à la première feuille du fichier
  Set wsExcel = wbExcel.Worksheets(xPage)
 
  With wsExcel
     .Activate
    Do While Not rs.EOF
            'LIRE L' ENREGISTREMENT
            'ET
            'ECRIRE DANS EXCEL
            y = y + 1
    
           'pour avoir 12 lignes par page
             If y = 12 Then  
               If xPage = wbExcel.Worksheets.Count Then
                 'AJOUTER UNE FEUILLE
                  wbExcel.Worksheets.Add , , xPage, 1
               End If
                 xPage = xPage + 1
                
                 'ACTIVER LA DERNIERE PAGE
                 Set wsExcel = wbExcel.Worksheets(xPage)
                .Activate
                y = 1
             End If
           
            .Cells(y, 1) = rs!Nom
            .Cells(y, 2) = rs!Prenom
            .Cells(y, 3) = rs!Ne_le
             .Cells(y, 3) = rs!ArNom
             wsExcel.Cells(y, 3) = rs!ArPrenom
         
            'IMPRIMER
            '.PrintOut
           
            'SUIVANT
            rs.MoveNext
    Loop
MsgBox "TERMINE"

'AFFICHER EXCEL
     wbExcel.Windows.Application.Visible = True

'FERMER EXCEL
   ' .Close False
 
 End With

'
'...DETRUIRE LES OBJETS
 Set appExcel = Nothing
 Set wbExcel = Nothing
 Set wsExcel = Nothing
  MsgBox " Objet fermé"
End Sub

Je sais qu' au niveau code, c' est un peu juste,
mais c' est tout ce que j' ai pu faire :-).
Et à vrai dire le problème se situe ailleurs.
En effet, lorsque j' ajoute une nouvelle feuille,
celle ci se retrouve à gauche de celle qui était la dernière.
Quelqu' un peut-il m' aider à faire en sorte que la
dernière ajoutée soit toujours à droite.

Merci.

NB: Vous m' excuserez si j' ai mal choisi le thème.


 				 						 								
... Y'en a même qui disent qu'ils l'ont vu voler.

mardi 1 juillet 2008 à 19:11:17 | Re : VB6 et ajouter une feuille à un classeur Excel.

PCPT

Administrateur CodeS-SourceS
^^
déplacé de VBA vers VB6
(j'crois que c'est la première fois, pour moi en tout cas)

mardi 1 juillet 2008 à 19:18:51 | Re : VB6 et ajouter une feuille à un classeur Excel.

LIBRE_MAX

je me doutais bien que je suis trompé de rubrique.

En tout cas, problème résolu en ce qui concerne
l' ordre des sheets.
Un argument mal placé , comme ma question :)
Il fallait mettre
'AJOUTER UNE FEUILLE
   wbExcel.Worksheets.Add , xPage, 1

xPage en deuxième position .Ce qui correspond à After.
Reste l' optimisation du code.
Je compte sur les Eperts.Ils se reconnaiteront.
Merci


... Y'en a même qui disent qu'ils l'ont vu voler.

mardi 1 juillet 2008 à 19:32:45 | Re : VB6 et ajouter une feuille à un classeur Excel.

PCPT

Administrateur CodeS-SourceS
avec excel..., pas dans le lot

peut-être un .Application.ScreenUpdating = False sous le WITH, et True en sortie

ton .Cells(y, 3) prend 3 valeurs, peut-être ne garder que la 3e (à moins que çà soit juste pour des tests...)

un petit rs.close et set rs = nothing en sortie

sinon à première vue çà semble correct

mardi 1 juillet 2008 à 19:34:58 | Re : VB6 et ajouter une feuille à un classeur Excel.

PCPT

Administrateur CodeS-SourceS
et si on doit passer par le .activate, tu peux supprimer le 1er et descendre le 2e de 2 lignes

mardi 1 juillet 2008 à 19:51:04 | Re : VB6 et ajouter une feuille à un classeur Excel.

LIBRE_MAX

...avec excel..., pas dans le lot
On est au moins deux


...Efectivement
 .Cells(y, 1) = rs!Nom
 .Cells(y, 2) = rs!Prenom
 .Cells(y, 3) = rs!Ne_le
 .Cells(y, 4) = rs!ArNom
 .Cells(y, 5) = rs!ArPrenom

j' ai fait un copier/coller sur la 3 ligne
et j' ai omis de changer l' index .

...un petit rs.close et set rs = nothing en sortie
Accordé !

Peut être aussi déplacer 
'IMPRIMER
  '.PrintOut

vers
If y = 12 Then  
'>> en pensant bien sûr à l' activer

Pour le
peut-être un .Application.ScreenUpdating = False sous le WITH, et True en sortie

Peut être..

J' ai pensé à

'AFFICHER EXCEL
     wbExcel.Windows.Application.Visible = True

pour ouvrir directement Excel et constater les modifs.

En tout cas compte tenu de tes remarques, c' est un bn début




... Y'en a même qui disent qu'ils l'ont vu voler.

mardi 1 juillet 2008 à 20:03:10 | Re : VB6 et ajouter une feuille à un classeur Excel.

LIBRE_MAX

Passer le problème de l' ordre, je viens de constater
que seule la première feuille est remplie.
Même en déplaçant le .Activate , comme suggèré.
T' as bien mis le doigt dessus.. Reste à trouver ou le caser.


 

 				 						 								
... Y'en a même qui disent qu'ils l'ont vu voler.

mardi 1 juillet 2008 à 20:16:12 | Re : VB6 et ajouter une feuille à un classeur Excel.

bigfish_le vrai

Salut,

moi je ferai bien un truc comme ça :

les modif en bleu et rouge

  With wbExcel
     .Activate
    Do While Not rs.EOF
            'LIRE L' ENREGISTREMENT
            'ET
            'ECRIRE DANS EXCEL
            y = y + 1
    
           'pour avoir 12 lignes par page
             If y = 12 Then  
               If xPage = .Worksheets.Count Then
                 'AJOUTER UNE FEUILLE
                  .Worksheets.Add , xPage, 1
               End If
                 xPage = xPage + 1
                
                 'ACTIVER LA DERNIERE PAGE
                 Set wsExcel = wbExcel.Worksheets(xPage).Activate <--- a suprimer
                y = 1
             End If
            with .Worksheets(.Worksheets.Count) 'ici tu sera toujours certain de travailler sur la derniere
                .Cells(y, 1) = rs!Nom
                .Cells(y, 2) = rs!Prenom
                .Cells(y, 3) = rs!Ne_le
                .Cells(y, 4) = rs!ArNom
                .Cells(y, 5) = rs!ArPrenom
             End With

         
            'IMPRIMER
            '.PrintOut
           
            'SUIVANT
            rs.MoveNext
    Loop
MsgBox "TERMINE"

'AFFICHER EXCEL
     wbExcel.Windows.Application.Visible = True

'FERMER EXCEL
   ' .Close False
 
 End With




mardi 1 juillet 2008 à 20:47:32 | Re : VB6 et ajouter une feuille à un classeur Excel.

LIBRE_MAX

Salut bigfish_levrai,
Je ne sais pas pourquoi mais avec ce que tu 
préconises, les données se retrouvent tous à
la dernière page (24 pour être précis)
Alors ne prend t-il pas en compte que les
derniers ?
J' ai rajouter un compteur, et
.Cells(y,7)=enr
et enr prend les valeurs des 12 derniers.
Les autres pages sont vides.
 				
... Y'en a même qui disent qu'ils l'ont vu voler.

mardi 1 juillet 2008 à 21:29:28 | Re : VB6 et ajouter une feuille à un classeur Excel.

bigfish_le vrai

Comprend pas !!!
La condition if y=12 oblige excel ecrire sur douze ligne avant de creer une page... comment peut il creer les page ecrire apres ?!?!?

Ah oui ! compris

             If y = 12 Then   'si y = 12 on doit changer de page
               If xPage = .Worksheets.Count Then 'si on est a la derniere page deja existante
                 'AJOUTER UNE FEUILLE
                  .Worksheets.Add , xPage, 1
               Else
'si un certain nombre de page existe deja on passe a la suivante
                   xPage = xPage + 1
               End If
                y = 1
             End If
            with .Worksheets(xPage)
                .Cells(y, 1).Value = rs!Nom
                .Cells(y, 2).Value = rs!Prenom
                .Cells(y, 3).Value = rs!Ne_le
                .Cells(y, 4).Value = rs!ArNom
                .Cells(y, 5)
.Value = rs!ArPrenom
             End With

cela devrait aller mieux... je doit dire que j'ai zapper le cas des feuilles deja existantes




1 2 3

Cette discussion est classé dans : set, excel, rs, wbexcel, xpage


Répondre à ce message

Sujets en rapport avec ce message

Impossible d'ouvrir Excel depuis VB [ par legofan ] Hello,J'essaie désespérément de lancer excel depuis ma form avec le code suivant:Dim appExcel As Excel.ApplicationDim wbExcel As Excel.Workbook< visual basic et excel [ par T103 ] je voudrai cree une application sous vb ki me permete de lire des valeure dans un fichers excel, mai lorske jexecute mon code jai une erreur : erreur Au secours pb excel [ par elbrahimo ] salut je n'arrive pas à trouver d'où vient mon probleme, j'importe un fichier texte vers excel, cela marche bien qu'une fois, mais à la deuxieme fois Excel [ par mongii ] Bonjeur je veux ouvrir un fichier excel situé dans le même chemin que mon application Dim appExcel As Excel.Application Dim wbExcel As Excel.Workbook  pb pour convertir du dbf en xls aidez moi svp [ par emilekader ] je cherche à convertir 4000 fichiers dbf en xls, en vb. je n'arrive pas à trouver le code pourconvertir le dbf en xls sous vb voilà mon code: Sub S pb pour convertir du dbf en xls aidez moi svp [ par emilekader ] je cherche à convertir 4000 fichiers dbf en xls, en vb. je n'arrive pas à trouver le code pourconvertir le dbf en xls sous vb voilà mon code: Sub S pb pour convertir du dbf en xls aidez moi svp [ par emilekader ] je cherche à convertir 4000 fichiers dbf en xls, en vb. je n'arrive pas à trouver le code pourconvertir le dbf en xls sous vb voilà mon code: Sub S Copier et Supprimer une feuille Excel avec du VB [ par PAULOM ] Bonjour à tous, Voici mon probleme je dois faire une automatisation d'un fichier Excel avec une table Access. Je dois importer ma table Access "T31_ Problème pour exporter une table ACCESS vers EXCEL [ par PAULOM ] Bonjour à tous, J'ai un petit problème concernant l'exportation d'une table ACCESS vers EXCEL. Je veux exporter la table "T31_Cumul_Nvx_clients_pa [VB6] Terminer processus excel [ par aurelien2723 ] Salut! J'ai lu plusieus topics sur ce sujet, mais aucune réponse... Donc j'ai mon programme en VB6 qui ouvre 1 feuille excel, puis n feuilles Excel


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,092 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.