Microsoft 365 Aide VBA

sebsut1

XLDnaute Nouveau
Bonjour à tous,
Je m'appelle Seb et j'ai besoin d'une aide concernant VBA.
J'ai un fichier excel de performance industrielle associée à une macro de fou... malheureusement, ce n'est pas moi qui l'ai créee...
la macro buggue à un moment et le debugage me surligne en jaune cette ligne:
If (ThisWorkbook.Worksheets(txt).Cells(Sheets("CONSTANTES").Cells(2, 11).Value, 10)) Then GoTo etapeVendredi
est-ce que quelqu'un pourrait me dire ce que cette ligne signifie?
merci beaucoup pour votre aide!
bonne journée à tous
Sébastien
 

Fred0o

XLDnaute Barbatruc
Bonjour @sebsut1

On va essayer de décortiquer cette instruction.

Le if(....) Then Goto etapeVendredi, signifie que si le résultat de ce qui est entre les parentheses est VRAI, alors on le programme continue a partir de l'instruction située juste apres l'etiquette etapeVendredi: dans le programme. Sinon, le programme continue juste a la ligne suivante.

Maintenant, regardons la condition :
ThisWorkbook.Worksheets(txt).Cells(Sheets("CONSTANTES").Cells(2, 11).Value, 10)
Le ThisWorkbook.Worksheets(txt) fait reference a un onglet du fichier Excel dont le nom se trouve dans la variable nommée txt. Cells(Sheets("CONSTANTES").Cells(2, 11).Value
Dans cet onglet, on va voir le contenu de la cellule située au croisement de la xieme ligne et 10eme colonne.

La xieme ligne est representee par la formule Sheets("CONSTANTES").Cells(2, 11).Value. Ceci évalue le contenu de la cellule K2 de la feuille CONSTANTES. En effet .Cells(2, 11) représente la cellule K2 (2eme ligne, 11e colonne).

En conclusion si le contenu de la cellule au croisement de la ligne définie en 'CONSTANTES'!K2 et de la colonne 10 et située dans la feuille dont le nom est dans la variable txt est VRAI, alors on execute les instructions situées après l'etiquette etapeVendredi. Sinon on poursuit a la ligne de code suivante.

L'erreur peut se situer dans le contenu de la variable txt, dans le contenu de la cellule 'CONSTANTES'!K2 ou dans le contenu de la cellule définie par ThisWorkbook.Worksheets(txt).Cells(Sheets("CONSTANTES").Cells(2, 11).Value, 10)

C'est peut être pas très clair mais difficile pour ;oi de faire mieux.
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Déjà on ne connait pas le type d'erreur , 424 , objet requis ..etc ??
Ensuite souvent l'erreur signalée sur une instruction provient d'ailleurs
J'explique via un exemple parmi d'autres :
IF Fic_ouvert(nom_fic) THEN ..... ( appel d'une fonction dans un module )
Erreur l'objet n'appartient pas la selection ????? euh ???
Et en fait nom_fic n'avait pas de DIM as string au début donc pas la peine de se décarcasser sur le IF !!!!
ENCORE UNE FOIS ... pas de fichier exemple joint ??
 

sebsut1

XLDnaute Nouveau
Bonjour @sebsut1

On va essayer de décortiquer cette instruction.

Le if(....) Then Goto etapeVendredi, signifie que si le résultat de ce qui est entre les parentheses est VRAI, alors on le programme continue a partir de l'instruction située juste apres l'etiquette etapeVendredi: dans le programme. Sinon, le programme continue juste a la ligne suivante.

Maintenant, regardons la condition :
ThisWorkbook.Worksheets(txt).Cells(Sheets("CONSTANTES").Cells(2, 11).Value, 10)
Le ThisWorkbook.Worksheets(txt) fait reference a un onglet du fichier Excel dont le nom se trouve dans la variable nommée txt. Cells(Sheets("CONSTANTES").Cells(2, 11).Value
Dans cet onglet, on va voir le contenu de la cellule située au croisement de la xieme ligne et 10eme colonne.

La xieme ligne est representee par la formule Sheets("CONSTANTES").Cells(2, 11).Value. Ceci évalue le contenu de la cellule K2 de la feuille CONSTANTES. En effet .Cells(2, 11) représente la cellule K2 (2eme ligne, 11e colonne).

En conclusion si le contenu de la cellule au croisement de la ligne définie en 'CONSTANTES'!K2 et de la colonne 10 et située dans la feuille dont le nom est dans la variable txt est VRAI, alors on execute les instructions situées après l'etiquette etapeVendredi. Sinon on poursuit a la ligne de code suivante.

L'erreur peut se situer dans le contenu de la variable txt, dans le contenu de la cellule 'CONSTANTES'!K2 ou dans le contenu de la cellule définie par ThisWorkbook.Worksheets(txt).Cells(Sheets("CONSTANTES").Cells(2, 11).Value, 10)

C'est peut être pas très clair mais difficile pour ;oi de faire mieux.
Bonjour FredOo et merci beaucoup pour ta réponse.
J'ai essayé de regarder mais je ne vois pas le rapport entre la cellule K2 et le croisement dont tu parles.
Je voulais joindre le fichier mais il est trop gros, y-at-t'il un autre moyen pour te l'envoyer?
Merci beaucoup
Seb
 

Fred0o

XLDnaute Barbatruc
Bonjouir @sebsut1

Cells(2,11) signifie cellule a la 2eme ligne et 11eme colonne. Soit cellule K2.

Pour m'envoyer le fichier, le mieux est d'en faire une copie, de supprimer les donnees et les feuilles qui ne servent a rien puis de l'envoyrer. il devrait largement rentrer dans les quotas.