Erreur d'exécution '9' entre deux ordinateurs ???
Bonjour à tous,
Pour le travail, j'ai effectué un code me permettant d'ouvrir un fichier Excel depuis un autre et de récupérer certaines valeurs.
Mon code fonctionne correctement sur mon ordinateur. Donc je les transférer à deux de mes collègues et là pour un des deux ça ne fonctionne pas. Il apparait l'erreur : Erreur d'exécution '9'.
Quand il exécute le code, le programme va bien rechercher le fichier à ouvrir et l'ouvre mais au moment de récupérer les données, l'erreur apparaît.
Nous possédons tous les trois Windows 7, Excel 2010 et avons accès exactement au même serveur.
J'avoue que je ne comprends pas du tout ce qu'il se passe.
Si quelqu'un à une idée?
Merci.
Bonjour Joko,
Erreur d'exécution 9 = l'indice n'appartient pas à la sélection
N'y a t'il pas des lignes/colonnes masquées chez ton collègue ?
Ou le nom de l'onglet est-il le même ?
A+
Bonjour,
Non, on utilise le même fichier et l'on fait référence au même fichier pour récupérer les valeurs.
Les deux fichiers sont sur le serveur de l'usine et l'on va bien chercher le même fichier au même endroit.
Re,
L'affichage des lettres de colonnes est bien le même sur les 2 PC, l'un n'est pas en référence L1C1 ?
A+
La case style de référence L1C1 est bien décochée sur les deux PC.
Re,
Peux-tu nous mettre le code des fichiers ?
A mettre en les balises [code ] et [ /code] sans espace :wink:
A+
Voici le code :
Sub OEE()
'si OEE pas à jour'
MsgBox "Les OEE vont être mise à jour, Cliquer sur OK"
Dim Fichier As String
Dim Semaine_Dernière As Byte
Dim Semaine As Byte
'Définie le N° semaine'
Semaine = DatePart("ww", Date, 2, 2)
'Définie le N° semaine pour le nomn fichier OEE'
Semaine_Dernière = Semaine - 1
'Ouvre le fichier des OEE'
Workbooks.Open Filename:="P:\Fabrication\Suivi de production\Archive 2014" & "\" & "SEMAI." & Semaine_Dernière & ".PAL.2014.xlsx"
'Récupére le nom du fichier des OEE'
Fichier = "SEMAI." & Semaine_Dernière & ".PAL.2014.xlsx"
'____________________________________________________________________________________________________________________________________'
'Ligne A'
'Si Valeur de l'efficience comporte une erreur alors valeur transformée en "/"
'Si non Si Valeur de l'efficience = 0 alors valeur transformée en "/"
'Sinon, récupére la valeur et la place à la fin du tableau'
'___________________________________________________________________________________________________________'
If IsError(Workbooks(Fichier).Sheets("EFFICIENCES").Range("L11")) Then
Workbooks("PLANNING PROD vs MAINTENANCE").Sheets("OEE").Range("Q" & Rows.Count).End(xlUp).Offset(1) = "/"
ElseIf Workbooks(Fichier).Sheets("EFFICIENCES").Range("L11") = 0 Then
Workbooks("PLANNING PROD vs MAINTENANCE").Sheets("OEE").Range("Q" & Rows.Count).End(xlUp).Offset(1) = "/"
Else
Workbooks("PLANNING PROD vs MAINTENANCE").Sheets("OEE").Range("Q" & Rows.Count).End(xlUp).Offset(1) = Workbooks(Fichier).Sheets("EFFICIENCES").Range("L11")
End IfL'erreur se fait à la dernière ligne.
Merci.
Re,
En supposant que le code donné se trouve dans le classeur "PLANNING PROD vs MAINTENANCE"
Essaye comme ça
Dim WbkOE As Workbook
'si OEE pas à jour'
MsgBox "Les OEE vont être mise à jour, Cliquer sur OK"
Dim Fichier As String
Dim Semaine_Dernière As Byte
Dim Semaine As Byte
'Définie le N° semaine'
Semaine = DatePart("ww", Date, 2, 2)
'Définie le N° semaine pour le nomn fichier OEE'
Semaine_Dernière = Semaine - 1
'Ouvre le fichier des OEE'
Set WbkOE = Workbooks.Open(Filename:="P:\Fabrication\Suivi de production\Archive 2014" & "\" & "SEMAI." & Semaine_Dernière & ".PAL.2014.xlsx")
'Récupére le nom du fichier des OEE'
' NE SERT PLUS
' Fichier = "SEMAI." & Semaine_Dernière & ".PAL.2014.xlsx"
'____________________________________________________________________________________________________________________________________'
'Ligne A'
'Si Valeur de l'efficience comporte une erreur alors valeur transformée en "/"
'Si non Si Valeur de l'efficience = 0 alors valeur transformée en "/"
'Sinon, récupére la valeur et la place à la fin du tableau'
'___________________________________________________________________________________________________________'
If IsError(WbkOE.Sheets("EFFICIENCES").Range("L11")) Then
ThisWorkbook.Sheets("OEE").Range("Q" & Rows.Count).End(xlUp).Offset(1) = "/"
ElseIf WbkOE.Sheets("EFFICIENCES").Range("L11") = 0 Then
ThisWorkbook.Sheets("OEE").Range("Q" & Rows.Count).End(xlUp).Offset(1) = "/"
Else
ThisWorkbook.Sheets("OEE").Range("Q" & Rows.Count).End(xlUp).Offset(1) = WbkOE.Sheets("EFFICIENCES").Range("L11")
End If
' Effacer la vairable objet
Set WbkOE = nothingA+
Ça marche, Nikel.
Je te remercie.
Mais qu'est ce qui pouvait rentrer en conflit, puisse que sur mon ordinateur ça fonctionné correctement?
MercI
Re,
Pour moi 2 possibilités,
1) le nom du classeur actif "PLANNING PROD vs MAINTENANCE"
2) le nom du classeur ouvert : Fichier = "SEMAI." & Semaine_Dernière & ".PAL.2014.xlsx"
En utilisant une variable objet Workbook
et ThisWorkbook pour le classeur ou se trouve le code, tu limites les problèmes
A+
Ok,
je m'en souviendrais pour la prochaine fois.
Je te remercie pour ton aide.
A+
Bonjour,
Sur mon poste, cette case est cochée.
Re,
Avec Seven ou supérieur cela ne sert plus à rien (à mon avis)
Puisque la sélection du nom sans l'extension se fait d'elle même
De plus c'est dangereux, car un exécutable peut se cacher derrière un pseudo fichier ".txt"
Exemple : Executable.txt.exe
se verra comme : Executable.txt
ok.
Oui, en plus c'est l'ordinateur du travail donc je ne vais pas enlever les sécurités.
Joko,
Je pense que l'on ne c'est pas compris
Si l'option est cochée sur ton poste...
pour moi ce n'est pas une sécurité, bien au contraire, c'est un danger
Microsoft par défaut coche cette option dans ces versions de Windows, mais c'est très controversé.
Au plaisir
Ha d'accord au temps pour moi.
Merci
