[déplacé VB6 -> VBA] exporter des infos d'un fichier excel à un autre [Résolu]

Signaler
Messages postés
5
Date d'inscription
vendredi 29 mai 2009
Statut
Membre
Dernière intervention
2 juillet 2009
-
Messages postés
5
Date d'inscription
vendredi 29 mai 2009
Statut
Membre
Dernière intervention
2 juillet 2009
-
Bonjour,
J'aimerai pouvoir exporter des infos d'un fichier excel à un autre.
Je travaille avec office 2003 et aussi 2007 (si ça pouvait fonctionner sur les 2 ça serait bien)
J'ai donc un fichier excel avec des données, j'ai créé un bouton dans ce fichier excel qui quand on clic dessus permet de chercher le fichier vers lequel on va envoyer les infos.
Déjà a partir de la je ne suis pas sur d'avoir la bonne methode.
Le fichier cible est un fichier contenant déja des données.

Le problème que j'ai est que quand je lance la macro, tout se passe apparement bien sauf que le fichier source s'est ouvert dans VBA mais pas sur excel. En gros je vois les objet dans VBA mais sur excel rien.
j'avais ajouté une commande save pour le fichier source à la fin et j'ai essayer de tout fermer et de reouvrir pour voir. Mais la encore aucune feuille ne s'affiche dans excel.
Il y a des partie avec des guillemets devant parce que j'ai fait plusieurs essais mais rien ne fonctionne comme je le souhaite.

Voici mon code:

Private Sub CommandButton1_Click()
 
Dim nligne, lignedest, i, j, ntache As Integer
Dim xls As Excel.Workbook
Dim maplage, trouve As Range
Dim fichierchoisi
 
'Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
 
On Error GoTo fin
 
'With Application.FileDialog(msoFileDialogOpen)
'.AllowMultiSelect = False
'.Show
'fichierchoisi = .SelectedItems(1)
'End With
 
Set xls = GetObject(Application.GetOpenFilename())
 
With xls.Worksheets("Feuille de Saisie").Range("A2", "A1000")
        .RemoveSubtotal
End With
 
Set PL3 = Range("A2", "A1000")
 
nligne = Find0
 
i = 3
 
Do Until i = nligne
   
    If Cells(i, 1).Interior.ColorIndex = 4 Then
    devis = Cells(i, 2).Value
    Set maplage = xls.Worksheets("Feuille de Saisie").Range("I4", "I1000")
    Set trouve = maplage.Find(devis, maplage.Cells(1), xlValues, xlWhole, xlByColumns, xlNext)
   
        If trouve Is Nothing Then
       
            Set PL3 = xls.Worksheets("Feuille de Saisie").Range("A4", "A1000")
            lignedest = Find0
            j = 5
            ntache = 1
           
            Do Until j = lignedest
               
                If xls.Worksheets("Feuille de Saisie").Cells(j, 1).Value > ntache Then ntache = xls.Worksheets("Feuille de Saisie").Cells(j, 1).Value
               
                j = j + 1
               
            Loop
           
            With xls
           
                .Worksheets("Feuille de Saisie").Cells(lignedest, 1).Value = ntache + 1
                .Worksheets("Feuille de Saisie").Cells(lignedest, 2).Value = Cells(i, 4).Value
                .Worksheets("Feuille de Saisie").Cells(lignedest, 3).Value = Cells(i, 9).Value
                .Worksheets("Feuille de Saisie").Cells(lignedest, 9).Value = Cells(i, 3).Value
           
            End With
       
        End If
   
    End If
i = i + 1
Loop
 
With xls.Worksheets("Feuille de Saisie").Range(Cells(2, 1), Cells(lignedest, 20))
   
    .Subtotal 8, xlSum, Array(3, 10, 11, 13, 14), True, , xlSummaryBelow
 
End With
 
Set xls = Nothing
 
fin:
 
'Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
  
End Sub

1 réponse

Messages postés
5
Date d'inscription
vendredi 29 mai 2009
Statut
Membre
Dernière intervention
2 juillet 2009

j'aai trouvé la solution, je la met la si jamais quelq'un à le meme probleme. Il faut faire en sorte que la fenetre soit visible:

' Set the object variable to refer to the file you want to use.

    Dim excelObj AsObject = GetObject(fileName)

    ' Show Excel through its Application property.

    excelObj.Application.Visible = True

    ' Show the window containing the file.

    Dim winCount AsInteger = excelObj.Parent.Windows.Count()

    excelObj.Parent.Windows(winCount).Visible = True