par Stephane Maillard » 30 Juil 2003 à 10:17
Re,Voici le code :Option PublicOption ExplicitSub Initialize On Error Goto err_ImportExcel ' Variable de sélection de fichier Dim tmpFic As Variant Dim sFic As String ' Variable de traitement de fichier Excel Dim xlsApp As Variant ' Application Excel Dim xlsWorkBook As Variant ' Classeur Dim xlsSheet As Variant ' Feuille de calcul Dim xlsLigne As Integer ' Ligne Dim xlsColonne As Integer ' Colonne ' Demande de sélection du fichier Excel à traité tmpFic = OuvreXLS() sFic = tmpFic(0) ' Tableau de données Dim sLig() As String ' Met dans un tableau les données de la ligne Dim sCol() As String ' Met dans un tableau les entêtes de colonne ' Compteur de boucle Dim iCompteur As Integer Dim iCompteurLigne As Integer Dim iCompteurColonne As Integer ' Vérification des champs vide Dim vVF As Variant ' Traitement sur le fichier Excel Print "Connexion à Excel..." Set xlsApp = CreateObject("Excel.Application") ' Création de l'instance Print "Ouverture du fichier : " & sFic xlsApp.Workbooks.Open sFic ' Ouverture du fichier Set xlsWorkBook = xlsApp.ActiveWorkbook ' Récupère le classeur actuel Set xlsSheet = xlsWorkBook.ActiveSheet ' Récupère la feuille active xlsApp.Visible = False ' Affiche Excel xlsSheet.Cells.SpecialCells(11).Activate xlsLigne = xlsApp.ActiveWindow.ActiveCell.Row ' Nombre de ligne à traiter xlsColonne = xlsApp.ActiveWindow.ActiveCell.Column' Nombre de colonne à traiter ' Récupère les entêtes de colonne xlsSheet.Cells(1, 1).Select For iCompteurColonne = 1 To xlsColonne If iCompteurColonne = 1 Then Redim sCol(iCompteurColonne) As String sCol(iCompteurColonne) = xlsSheet.Cells(1, iCompteurColonne).Value Else Redim Preserve sCol(iCompteurColonne) As String sCol(iCompteurColonne) = xlsSheet.Cells(1, iCompteurColonne).Value End If Next ' Récupère les valeurs des cellules d'une ligne For iCompteurLigne = 2 To xlsLigne xlsSheet.Cells(iCompteurLigne, 1).select For iCompteurColonne = 1 To xlsColonne If iCompteurColonne = 1 Then Redim sLig(iCompteurColonne) As String sLig(iCompteurColonne) = xlsSheet.Cells(iCompteurLigne, iCompteurColonne).Value Else Redim Preserve sLig(iCompteurColonne) As String sLig(iCompteurColonne) = xlsSheet.Cells(iCompteurLigne, iCompteurColonne).Value End If Next ' Vérifit que le tableau n'est pas vide. vVF = False For iCompteur = 1 To Ubound(sLig) If sLig(iCompteur) <> "" Then vVF = True Exit For Else vVF = False End If Next Print "Traitement de la ligne " & iCompteurLigne & " sur " & xlsLigne If vVF = True Then Call CreationDocument(sLig, xlsColonne, sCol()) End If Next Print "Déconnexion d'Excel..." xlsWorkBook.Close False ' Ferme le classeur xlsApp.Quit ' Quitte Excel Set xlsApp = Nothing ' Ferme l'instance Print "Fin de l'importation du fichier Excel" Exit Sub err_ImportExcel: Resume NextEnd SubFunction OuvreXLS() As Variant Dim ws As New NotesUIWorkspace ' Affiche la fenêtre de sélection ' Le False correspond à une sélection simple OuvreXLS = ws.OpenFileDialog(False, "Ouverture d'un fichier Excel", "Fichiers Excel | *.xls", "c:")End FunctionSub CreationDocument(aLigneATraiter() As String, NbColonne As Integer, sCol() As String) Dim Session As NotesSession Dim Db As NotesDatabase Dim Doc As NotesDocument Dim iCompteur As Integer On Error Goto err_CreationDocument Set Session = New NotesSession Set Db = Session.CurrentDatabase Set Doc = Db.CreateDocument ' Nom du masque à utiliser Doc.Form = "impxls" For iCompteur = 1 To NbColonne ' Insère les valeur dans les champs MonChampsX Call doc.ReplaceItemValue(sCol(iCompteur), aLigneATraiter(iCompteur)) Next ' Sauvgarde le masque Call Doc.Save(True, False, False) ' Sort de la routine de création du masque Exit Sub err_CreationDocument: Exit SubEnd Sub[%sig%]
Cordialement
Stéphane Maillard