Set fichierExcel = appExcel.Workbooks.Add
generateExcel Combo1.Text, rs, appExcel
Ne crois-tu pas, enfin, qu'il serait plus simple de copier ton classeur (avec ses forumules et tout) dans un nouveau classeur, de le vider de ses valeurs, puis d'y injecter ce que tu veux ?
Public Function generateExcel(table As String, rs As ADODB.Recordset, appExcel As Excel.Application) On Error Resume Next Dim col(300) As String Dim i As Integer Dim J As Integer Dim k As Integer ' Récupération du nombre de colonnes Dim nbColonnes As Integer Dim lettre As String nbColonnes = rs.Fields.Count For i = 0 To 25 col(i) = Chr(65 + i) Next i k = 26 For i = 0 To 7 For J = 0 To 25 col(k) = Chr(65 + i) & "" & Chr(65 + J) k = k + 1 If k > nbColonnes Then Exit For End If Next J If k > nbColonnes Then Exit For End If Next i 'préparation de la barre de progression Dim nbEnr As Integer Dim Step As Integer nbEnr = 1 rs.MoveFirst While Not (rs.EOF) nbEnr = nbEnr + 1 rs.MoveNext Wend frmProgression.ProgressBar1.Value = 0 frmProgression.ProgressBar1.Max = nbEnr 'frmProgression.Caption = "Exportation de la table '" & table & "'" Step = 1 frmProgression.Show For i = 0 To (nbColonnes - 1) lettre = col(i) appExcel.Worksheets(1).Range(lettre & "1").Value = rs.Fields(i).Name Next i frmProgression.tick Step rs.MoveFirst i = 2 Dim caseCible As String While Not (rs.EOF) For J = 0 To (nbColonnes - 1) If Not IsNull(rs.Fields(J).Value) Then caseCible = col(J) & "" & i appExcel.Worksheets(1).Range(caseCible).Value = rs.Fields(J).Value End If Next J i = i + 1 frmProgression.tick Step ' Déplacement du curseur rs.MoveNext Wend frmProgression.Hide End Function
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPublic Function generateExcel(table As String, rs As ADODB.Recordset, appExcel As Excel.Application)
Set appExcel = CreateObject("Excel.Application")