Ouvrir un fichier excel caché depuis excel
Balata9
-
Balata9 -
Balata9 -
Bonjour à tous,
Je cherche un moyen d'ouvrir un fichier excel "CALCUL PRODUCTION JOUR" au début d'une macro car la macro va chercher des données dans "CALCUL PRODUCTION JOUR". Cependant, j'aimerais que ce fichier s'ouvre de manière caché et se referme à la fin de la macro.
J'ai écrit la macro suivante mais ca ne marche pas:
On dirais que le fichier ne s'ouvre pas car j'ai l'erreur suivante: "l'indice n'appartient pas à la sélection". Merci d'avance pour votre aide
Je cherche un moyen d'ouvrir un fichier excel "CALCUL PRODUCTION JOUR" au début d'une macro car la macro va chercher des données dans "CALCUL PRODUCTION JOUR". Cependant, j'aimerais que ce fichier s'ouvre de manière caché et se referme à la fin de la macro.
J'ai écrit la macro suivante mais ca ne marche pas:
Sub FaibleProductible()
Dim xlApp As New Excel.Application ' déclarer Public si dans un module
Dim xlBook As New Excel.Workbook
Dim xlSheet As New Excel.Worksheet
'Ouvrir le classeur dont on a besoin avec tout le chemin...
Set xlBook = xlApp.Workbooks.Open("C:\Documents and Settings\utilisateur\Bureau\CONNECTIS MARTINIQUE\CALCUL PRODUCTION JOUR.xls")
Set xlSheet = xlBook.Sheets("CALCULS") ' si on veut utiliser une feuille en particulier
La je met la macro qui va chercher les données dans "CALCUL PRODUCTION JOUR"
xlBook.Close
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
End Sub
On dirais que le fichier ne s'ouvre pas car j'ai l'erreur suivante: "l'indice n'appartient pas à la sélection". Merci d'avance pour votre aide
A voir également:
- Ouvrir un fichier excel caché depuis excel
- Comment ouvrir un fichier epub ? - Guide
- Liste déroulante excel - Guide
- Comment ouvrir un fichier bin ? - Guide
- Word et excel gratuit - Guide
- Ouvrir un fichier .dat - Guide
6 réponses
Bonsoir,
J'ai testé en lisant une cellule, le fichier est bien ouvert.
Je me demande quand même pourquoi :
Dim xlSheet As New Excel.Worksheet
et non :
Dim xlSheet As Worksheet
puisque la feuille est existante dans le classeur, mais les 2 versions fonctionnent
eric
J'ai testé en lisant une cellule, le fichier est bien ouvert.
Je me demande quand même pourquoi :
Dim xlSheet As New Excel.Worksheet
et non :
Dim xlSheet As Worksheet
puisque la feuille est existante dans le classeur, mais les 2 versions fonctionnent
eric
Pourtant, ca ne marche pas pour moi. Je te met le code en entier, peut être que tu auras une idée de ce qu'il se passe:
Si tu comprends le problème c'est super!
Sub FaibleProductible()
Dim xlApp As New Excel.Application
Dim xlBook As New Excel.Workbook
Dim xlSheet As Worksheet
'Ouvrir le classeur dont on a besoin avec tout le chemin...
Set xlBook = xlApp.Workbooks.Open("C:\Documents and Settings\utilisateur\Bureau\CONNECTIS MARTINIQUE\CALCUL PRODUCTION JOUR.xls")
Set xlSheet = xlBook.Sheets("CALCULS") ' si on veut utiliser une feuille en particulier
Dim i As Long
Dim j As Long
Dim DATA As Long
Dim REF As Long
ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("B26:E300").ClearContents
j = 26 'Début du tableau de la page TABLEAU DE CONTROLE'
For i = 8 To 180
If Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Range("D" & i) = 0 Then
Else
DATA = Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Cells(i, 9)
REF = ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("C22")
End If
If DATA < REF Then
If Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Range("D" & i) = 0 Then
Else
ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("B" & j) = Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Range("A" & i)
ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("C" & j) = Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Range("I" & i)
ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("D" & j) = Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Range("J" & i)
ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("E" & j) = Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Range("L" & i)
j = j + 1
End If
End If
Next i
'Important en quittant le programme ou quand on n'en a plus besoin xlBook.Close
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
End Sub
Si tu comprends le problème c'est super!
Pourtant, ca ne marche pas pour moi. Je te met le code en entier, peut être que tu auras une idée de ce qu'il se passe:
Si tu comprends le problème c'est super!
Sub FaibleProductible()
Dim xlApp As New Excel.Application
Dim xlBook As New Excel.Workbook
Dim xlSheet As Worksheet
'Ouvrir le classeur dont on a besoin avec tout le chemin...
Set xlBook = xlApp.Workbooks.Open("C:\Documents and Settings\utilisateur\Bureau\CONNECTIS MARTINIQUE\CALCUL PRODUCTION JOUR.xls")
Set xlSheet = xlBook.Sheets("CALCULS") ' si on veut utiliser une feuille en particulier
Dim i As Long
Dim j As Long
Dim DATA As Long
Dim REF As Long
ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("B26:E300").ClearContents
j = 26 'Début du tableau de la page TABLEAU DE CONTROLE'
For i = 8 To 180
If Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Range("D" & i) = 0 Then
Else
DATA = Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Cells(i, 9)
REF = ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("C22")
End If
If DATA < REF Then
If Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Range("D" & i) = 0 Then
Else
ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("B" & j) = Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Range("A" & i)
ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("C" & j) = Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Range("I" & i)
ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("D" & j) = Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Range("J" & i)
ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("E" & j) = Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Range("L" & i)
j = j + 1
End If
End If
Next i
'Important en quittant le programme ou quand on n'en a plus besoin xlBook.Close
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
End Sub
Si tu comprends le problème c'est super!
J'obtiens le message d'erreur à la ligne suivante:
If Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Range("D" & i) = 0 Then
Cela vient peut être du fait que, comme tu dis, j'ai déja défini xlbook. Mais je ne comprend pas comment l'écrire.
Merci encore
If Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Range("D" & i) = 0 Then
Cela vient peut être du fait que, comme tu dis, j'ai déja défini xlbook. Mais je ne comprend pas comment l'écrire.
Merci encore
Bonjour,
Pour désigner un classeur (même ouvert), il faut mettre le chemin entier dans la désignation du classeur:
Workbook(C:\Documents and Settings\utilisateur\Bureau\CONNECTIS MARTINIQUE\CALCUL PRODUCTION JOUR.xls") par exemple.
Dans le code, le classeur "CALCUL PRODUCTION JOUR.xls" est instancié dans un objet xlBook et la feuille "CALCULS" de ce calsseur pas xlSheet, il faut donc les utiliser.
;o)
Pour désigner un classeur (même ouvert), il faut mettre le chemin entier dans la désignation du classeur:
Workbook(C:\Documents and Settings\utilisateur\Bureau\CONNECTIS MARTINIQUE\CALCUL PRODUCTION JOUR.xls") par exemple.
Dans le code, le classeur "CALCUL PRODUCTION JOUR.xls" est instancié dans un objet xlBook et la feuille "CALCULS" de ce calsseur pas xlSheet, il faut donc les utiliser.
Sub FaibleProductible()
Dim xlApp As New Excel.Application
Dim xlBook As New Excel.Workbook
Dim xlSheet As Worksheet
'Ouvrir le classeur dont on a besoin avec tout le chemin...
Set xlBook = xlApp.Workbooks.Open("C:\Documents and Settings\utilisateur\Bureau\CONNECTIS MARTINIQUE\CALCUL PRODUCTION JOUR.xls")
Set xlSheet = xlBook.Sheets("CALCULS") ' si on veut utiliser une feuille en particulier
Dim i As Long
Dim j As Long
Dim DATA As Long
Dim REF As Long
ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("B26:E300").ClearContents
j = 26 'Début du tableau de la page TABLEAU DE CONTROLE'
For i = 8 To 180
If xlSheet.Range("D" & i) = 0 Then
Else
DATA = xlSheet.Cells(i, 9)
REF = ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("C22")
End If
If DATA < REF Then
If xlSheet.Range("D" & i) = 0 Then
Else
ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("B" & j) = xlSheet.Range("A" & i)
ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("C" & j) = xlSheet.Range("I" & i)
ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("D" & j) = xlSheet.Range("J" & i)
ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("E" & j) = xlSheet.Range("L" & i)
j = j + 1
End If
End If
Next i
'Important en quittant le programme ou quand on n'en a plus besoin xlBook.Close
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
End Sub
;o)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question