probleme d'utilisation de workbook et worksheet

evzone

XLDnaute Nouveau
Bonjour,

Voici une partie de mon code dont je me sers pour calculer les moyennes dans un fichier... A present je voudrais le faire a partir d'un autre fichier que j'essaie d'appeler a l'aide de 2 variables, une workbook et une worksheet. voici mon code, je pense que c'est juste une erreur de synthaxe mais je ne trouve pas la solution.

Code:
Dim Impulstest As Workbook
Dim B73 As Worksheet
Dim B73Range_Day_ABS_T_VL_SOLL, B73Range_Day_ABS_T_VL, B73Range_Day_ABS_T_RL As Range

'Definition du tableur et de la feuille à utiliser

Impulstest = "G:\Stage Stuttgart\Macro 2\Correction des erreurs\Impulstest ab 110412_MZ_110606_MS.xls" 'Chemin du tableur à utiliser

'Calcul de la moyenne par heure et disposition dans toutes les colonnes Hours respectives

  For Compteur = 6 To 980 'On initialise le compteur à 6
        
        Set B73Range_Day_ABS_T_VL_SOLL = Workbooks("Impulstest").Sheets("B73").Range("B" & i & ":B" & (i + 29))
        Set B73Range_Day_ABS_T_VL = Workbooks("Impulstest").Sheets("B73").Range("C" & i & ":C" & (i + 29))
        Set B73Range_Day_ABS_T_RL = Workbooks("Impulstest").Sheets("B73").Range("D" & i & ":D" & (i + 29))
            
        Cells(Compteur, 2) = Application.WorksheetFunction.Average(B73Range_Day_ABS_T_VL_SOLL) 'Pour ABS_T_VL_SOLL
        Cells(Compteur, 3) = Application.WorksheetFunction.Average(B73Range_Day_ABS_T_VL) 'Pour ABS_T_VL
        Cells(Compteur, 4) = Application.WorksheetFunction.Average(B73Range_Day_ABS_T_RL) 'Pour ABS_T_RL
            
        i = i + 30 'Puis on ajoute 30 a i pour passer a une autre moyenne
        
   Next Compteur
 

Dranreb

XLDnaute Barbatruc
Re : probleme d'utilisation de workbook et worksheet

Bonjour
Sur quelle ligne l'erreur ? Avec quel message ?

J'ai juste repéré que vous n'avez spécifié As Range qu'une fois à la fin de votre instruction Dim.
Dans ce cas il ne l'applique qu'à la dernière variable, les autres se retrouvant déclarées par défaut de spécification As Variant.
À+
 
Dernière édition:

s.barrailler

XLDnaute Nouveau
Re : probleme d'utilisation de workbook et worksheet

Bonjour,

La première chose que je vois c'est l'appel de ta variable impulstest dans le paramètre de workbooks.
Au lieu de Workbooks("Impulstest")
il faudrait mettre Workbooks(Impulstest).

Idem pour le nom de ta feuille, si elle est nommée B73 (son nom de feuille) tu peux utiliser sheets("B73") mais si B73 est bien une variable (vu que tu l'as déclarée), il faut enlever les guillemets : sheets(B73)
 

evzone

XLDnaute Nouveau
Re : probleme d'utilisation de workbook et worksheet

Bonjour,

Erreur a cette ligne:

Code:
Impulstest = "G:\Stage Stuttgart\Macro 2\Correction des erreurs\Impulstest ab 110412_MZ_110606_MS.xls" 'Chemin du tableur à utiliser

Il me met une erreur 91... Je crois que ca veut dire que mon fichier est mal defini... (Je travaille sous Excel en Allemand je comprends rien de ce qu'il m'afficher dsl)

Ok merci pour les "range" je viens de changer...
 
Dernière édition:

evzone

XLDnaute Nouveau
Re : probleme d'utilisation de workbook et worksheet

Bonjour,

La première chose que je vois c'est l'appel de ta variable impulstest dans le paramètre de workbooks.
Au lieu de Workbooks("Impulstest")
il faudrait mettre Workbooks(Impulstest).

Idem pour le nom de ta feuille, si elle est nommée B73 (son nom de feuille) tu peux utiliser sheets("B73") mais si B73 est bien une variable (vu que tu l'as déclarée), il faut enlever les guillemets : sheets(B73)

C'est ce que j'avais fait au début mais même sans les guillemets ca ne marche pas...
 

evzone

XLDnaute Nouveau
Re : probleme d'utilisation de workbook et worksheet

J'ai fait ce que tu préconisais. Du coup on avance un peu mais une autre erreur apparait a la ligne suivante:

Code:
Set B73Range_Day_ABS_T_VL_SOLL = Workbooks(Impulstest).Sheets(B73).Range("B" & i & ":B" & (i + 29))

Erreur de type 9... Je ne pourrais pas vous dire ce que c'est google trad me sort n'importe quoi...
 
Dernière édition:

s.barrailler

XLDnaute Nouveau
Re : probleme d'utilisation de workbook et worksheet

La variable B73 semble ne pas avoir de valeur renseignée.
Si c'est le nom de ta feuille, il faut remettre les guillemets, si c'est bien une variable il faut lui donner une valeur B73= "nom_de_ta_feuille".

Je vois que i n'a pas de valeur non plus.
Tu essaie de lui faire sélectionner de B0 à B29.
Rajoute i=1 juste avant le For Compteur.
 
Dernière édition:

evzone

XLDnaute Nouveau
Re : probleme d'utilisation de workbook et worksheet

Merci de ton aide mais ca ne marche toujours pas. J'essaie differentes combinaisons mais cane marche toujours pas. Toujours la meme erreur... Sinon j'ai essaye de mettre directement le chemin et le nom de la feuille entre guillemets mais j'obtiens la meme erreur qu'au début...

Voici ce que me donne le debugger:
ndice hors de portée (erreur 9)


Vous pouvez cliquer sur les éléments et les collections de champs de données dans la plage définie pour cet accès. Cette erreur a des causes et des solutions suivantes:

Vous avez fait référence à un élément inexistant d'un tableau.
L'indice est hors de portée pour les indices, ou le champ de données ont été à ce point de l'exécution du programme pas été attribué dimensions. Vérifiez la déclaration du champ de données, si l'indice utilisé est défini dans les limites supérieures et inférieures. Fonctions UBound et LBound avec, vous pouvez effectuer l'accès conditionnel aux champs de données, si vous utilisez des champs de données de dimensions variables. Si l'indice comme une variable, afin de vérifier l'orthographe du nom de variable.

Vous avez déclaré un champ de données sans préciser le nombre d'éléments. L'exemple de code suivant, résout ce problème:
Dim Datenfeld1 () As Integer
Datenfeld1 (8) = 234 'Résout les erreurs de 9.

Si vous n'avez pas spécifié les limites de plage pour un champ de données, Visual Basic, aucune dimension implicite du champ de données de 0 - par 10. Vous devez plutôt utiliser Dim ou ReDim pour le nombre d'éléments d'un champ de données de manière explicite.

Vous avez fait référence à un objet de collection inexistant.
Essayez d'utiliser un For Each ... Next structure, au lieu d'éléments de l'index indiqué.

Vous avez utilisé une forme abrégée de l'indice, qui a indiqué implicitement un élément non valide.
Si vous utilisez l'exemple! Opérateur avec une collection qui est! implicitement à une touche. Objet! Par exemple Schlüsselname.value, correspond Objekt.item (nom de la clé). Value. Dans ce cas, une erreur se produit si un nom de clé non valide est un élément clé dans la collection. Utilisez un nom de clé valide ou d'un indice dans la collecte en vue de corriger l'erreur.

Pour plus d'informations que vous obtenez lorsque vous sélectionnez l'élément en question et appuyez sur F1 (Windows) ou AIDE (sur Macintosh).

Sachant que j'ai bien des valeurs dans la plage spécifiée. Cela pourrait-il venir du faite que dans cette plage les valeurs rentrée font appel aux valeurs d'une autre feuille?
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : probleme d'utilisation de workbook et worksheet

Ce n'était pas faux de déclare Impulstest As WorkBook. Moi j'aime bien.
Mais il faut que tout soit progerammé derrière en conséquence:
Lui affecter par un Set une expression Workbook représentant le classeur concerné ouvert,
puis l'employer ensuite directement comme expression Workbook, c'est adire directement comme qualificateur de la méthode Sheets par exemple.
À+
 

evzone

XLDnaute Nouveau
Re : probleme d'utilisation de workbook et worksheet

re Dranreb,

Voila ce que j'ai mis ca m'a l'air bon pour cette partie:
Code:
Set Impulstest = Application.Workbooks.Open("G:\Stage Stuttgart\Macro 2\Correction des erreurs\Impulstest ab 110412_MZ_110606_MS.xls")

Le probleme c'est que j'ai encore une erreur ensuite a cette ligne:
Code:
Set B73Range_Day_ABS_T_VL_SOLL = Workbooks(Impulstest).Sheets("B73").Range("B" & i & ":B" & (i + 29))

Enfin je n'ai pas compris cette phrase, si tu pouvais m'expliquer un peu plus en détail stp:

puis l'employer ensuite directement comme expression Workbook, c'est adire directement comme qualificateur de la méthode Sheets par exemple.

Merci
 

evzone

XLDnaute Nouveau
Re : probleme d'utilisation de workbook et worksheet

Je vous remets mon code qui a un petit peu changé si ca peut vous aider:

Code:
Dim Impulstest As Workbook
Dim B73Range_Day_ABS_T_VL_SOLL As Range
Dim B73Range_Day_ABS_T_VL As Range
Dim B73Range_Day_ABS_T_RL As Range
Dim i As Integer

'Definition du tableur et de la feuille à utiliser

Set Impulstest = Application.Workbooks.Open("G:\Stage Stuttgart\Macro 2\Correction des erreurs\Impulstest ab 110412_MZ_110606_MS.xls") 'Chemin du tableur à utiliser
i = 60
'Calcul de la moyenne par heure et disposition dans toutes les colonnes Hours respectives

  For Compteur = 6 To 15 'On initialise le compteur à 6
        
        Set B73Range_Day_ABS_T_VL_SOLL = Workbooks(Impulstest).Sheets("B73").Range("B" & i & ":B" & (i + 29))
        Set B73Range_Day_ABS_T_VL = Workbooks(Impulstest).Sheets("B73").Range("C" & i & ":C" & (i + 29))
        Set B73Range_Day_ABS_T_RL = Workbooks(Impulstest).Sheets("B73").Range("D" & i & ":D" & (i + 29))
            
        Cells(Compteur, 2) = Application.WorksheetFunction.Average(B73Range_Day_ABS_T_VL_SOLL) 'Pour ABS_T_VL_SOLL
        Cells(Compteur, 3) = Application.WorksheetFunction.Average(B73Range_Day_ABS_T_VL) 'Pour ABS_T_VL
        Cells(Compteur, 4) = Application.WorksheetFunction.Average(B73Range_Day_ABS_T_RL) 'Pour ABS_T_RL
            
        i = i + 30 'Puis on ajoute 30 a i pour passer a une autre moyenne
        
   Next Compteur
 

evzone

XLDnaute Nouveau
Re : probleme d'utilisation de workbook et worksheet

Désolé Dranreb, je l'avais fait un peu vite et comme ça a débloqué le problème, j'ai cherché la suite.

Pour Evzone,
Quand tu passe en débugage, quelle est la valeur de B73 ? et celle de i ?

Je dirai que i=60 et j'ai supprimé B73 en tant que variable parce qu'elle était inutile... je crois...
En fait i ne varie pas pour le moment, je crois que pour l'instant VB n'arrive pas a assigner le range... Enfin j'arrive pas a lui faire faire.

Erreur 13 (compatibilite et affectation de variable non?), a cette ligne :

Code:
Set B73Range_Day_ABS_T_VL_SOLL = Workbooks(Impulstest).Sheets("B73").Range("B" & i & ":B" & (i + 29))
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : probleme d'utilisation de workbook et worksheet

Enfin je n'ai pas compris cette phrase, si tu pouvais m'expliquer un peu plus en détail stp:
Il fallait le comprendre comme c'était écrit:
VB:
Set B73Range_Day_ABS_T_VL_SOLL = Impulstest.Sheets("B73").Range("B" & i & ":B" & (i + 29))
même si ça vous paraissait trop simple pour pouvoir être vrai: utiliser directement la variable déclarée As Workbook comme expression Workbook !
 

Discussions similaires

Réponses
3
Affichages
592

Statistiques des forums

Discussions
312 843
Messages
2 092 748
Membres
105 520
dernier inscrit
Inconnuto