VB6 et ajouter une feuille à un classeur Excel.

Résolu
Signaler
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
-
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
-
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.





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

23 réponses

Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
280 / 12 = 23,33

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
tiens ! juste au moment ou j'allais baisser le rideau
Merci en tout cas des propositions.Je verrais ça au petit matin.
Pour l' instant dodo.
A++
<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
@ bigfish

le bloc with c' est pas wbExcel mais wsExcel
et
with .Worksheets(xPage)
                .Cells(y, 1).Value = rs!Nom
                .Cells(y, 2).Value = rs!Prenom
      ...
    ...

End With

est faux !
wbExcel.Worksheets(xPage).Cells(y,1) est erroné.

Merci en tout cas de votre interêt.

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