A voir également:
- Ouvrir un fichier excel caché depuis excel
- Comment ouvrir un fichier epub ? - Guide
- Liste déroulante excel - Guide
- Ouvrir fichier .bin - Guide
- Comment ouvrir un fichier docx ? - Guide
- Si et excel - Guide
6 réponses
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
21 juin 2010 à 19:53
21 juin 2010 à 19:53
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!
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
Modifié par eriiic le 21/06/2010 à 23:25
Modifié par eriiic le 21/06/2010 à 23:25
Pas trop le temps actuellement mais tu devrais préciser en quelle ligne tu as 'l'indice n'appartient pas à la sélection'
If Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Range("D" & i)
Pourquoi utiliser Workbooks("CALCUL PRODUCTION JOUR") alors que tu as défini xlbook ?
If Workbooks("CALCUL PRODUCTION JOUR").Worksheets("CALCULS").Range("D" & i)
Pourquoi utiliser Workbooks("CALCUL PRODUCTION JOUR") alors que tu as défini xlbook ?
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
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
22 juin 2010 à 14:57
22 juin 2010 à 14:57
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