Erreur 13

7classement.xlsm (169.65 Ko)

Bonjour,

La macro dans le fichier ci-joint a été créée par un de vos collègue en mai 2014. J'utilise ce fichier une fois par année pour couvrir une compétition annuelle qui a lieu au début avril de chaque année. Lors de sa création la macro fonctionnait très bien. Aujourd'hui elle me donne une erreur 13. Je ne comprend pas pourquoi.

Merci de votre aide.

Bonjour,

cette erreur survient lorsque torchons & serviettes sont mélangées ! Le type de données n'est pas celui attendu …

Donc en regardant la ligne déclenchant l'erreur - aurait dû être indiquée dans la demande initiale ! - cela ne doit pas

être bien compliqué à trouver la source et à en comprendre la raison …

Bonjour,

Je dois avouer que je suis très novice en VBA. J'ai fait beaucoup de test depuis que j'ai reçu ta réponse et je crois avoir découvert la cause du problème.

Il semblerait que lorsque j'active la macro pour effacer les vieilles données dans mon fichier principale (trop volumineux pour le transférer dans le forum) ça empêche la macro du fichier "Classement" de fonctionner. Je dois faire d'autres tests pour confirmer le tout.

Je ne connais rien aux variables. Comme il y en a dans la macro, pourrais-tu m'expliquer comment les identifier et trouver leur source afin que je les adapte aux changement.

i.e: dans la macro il y a les variables suivantes: "C1", "onglet" etc....etc...

Je vais comprendre si ça ne te dis pas de répondre. Tu n'est pas là pour donner des cours mais pour aider.

Je te remercie de ton aide.

Bonjour,

Hum...Je ne vois pas l'intérêt de déclarer les variables de cette manière par rapport à ton fichier.

Mais là n'est pas le souci et à vrai dire à la lecture j'ai plutôt l'impression que cette macro était soit placée dans un autre fichier ou qu'elle doit fonctionner avec plusieurs fichiers ouverts

Ton souci vient au départ de cette ligne --> If Workbooks(Cl.Name).Sheets(Onglet.Name).Range("C8").Value = "Le Palmarès" Then

Au moment de l'erreur :

cl.name est le fichier Classement

onglet.name est la feuil2 dans le fichier classement

A cette endroit en cellule C8, tu as une formule qui vient de fichiers Tableau des entrées, Finales, site web

Faudrait savoir si tu as une valeur en feuil 2 cellue C8 et pourquoi on veut aller voir le mot Palmarès à cette endroit

Pour contourner le souci, tu peux essayer ceci. Mets cette instruction "On Error resume next" juste avant cette ligne et "On error go to 0" après l'instruction End if plus bas

A te relire

Selon où je me trouve, par mesure de sécurité je ne peux télécharger des fichiers .xlsm entre autres …

golfeur01 a écrit :

pourrais-tu m'expliquer comment les identifier et trouver leur source

Dans le VBE, ouvrir la fenêtre des Variables locales, placer le curseur texte dans le code de la procédure à exécuter

puis lancer le mode pas à pas via la touche F8. Cette touche sert à progresser instruction par instruction

permettant ainsi de contrôler au fur et à mesure le contenu des variables dans la fenêtre déjà citée …

7classement.xlsx (118.38 Ko)

Bonjour,

Le lien avec le fichier "Palmarès" est pour aller chercher l'année en cour. L'année est changée manuellement par le régisseur avant le début des compétitions dans le fichier "Palmarès" dans la cellule E8. C'est la raison pour le lien. La macro inscrit l'année de la compétition dans le fichier "Classement" afin d'identifier l'année dans laquelle les compétiteurs ont terminés dans les 3 premières positions. Dans le fichier "Palmarès" le dessin représentant Acti-Danse sert aussi de bouton pour activer la même macro que le bouton dans le fichier "Classement". Originalement la macro devait être activée à partir de ce bouton. J'ai créé le bouton dans le fichier "Classement afin de faciliter les choses.

Le lien avec le fichier "Finale Site Web" permet à la feuil2 du fichier "Classement" d'aller chercher les 3 premières positions de chaque catégories. La macro copie/colle les 3 gagnants dans le fichier "Classement" et fait le tri afin qu'ils apparaissent en ordre alphabétique de A - Z. CE processus doit ce faire à chaque année de compétitions. Étant donné qu'on ne sait jamais d'avance le nombre de personne gagnantes, et que l'on ne peut déterminer la ligne exacte ou sera copier/coller le premier compétiteur, c'est pourquoi j'ai demandé à l'un de tes collègues de créer cette macro.

J'ai inscrit les deux codes que tu m'as fournis aux endroits indiqués. La macro fonctionne qu'à moitié. Il manque deux éléments importants.

La macro copie/colle les données dans le fichier "Classement" mais NE LES TRIE PAS et N'INDIQUE PAS L'ANNÉE DANS LA COLONNE F du "Classement". J'ai la même erreur 13 qui apparaît, mais la ligne surlignée en jaune est la suivante:

"If C.Value <>"" and C.Value <>"zz" and C.Value <>"0" Then".

Concernant les Variables, excuse mon ignorance, mais je ne trouve pas l'endroit ou elles se situent. J'ai cherché "Variables Locales" dans tous les endroits du VBA sans succès. J'ai ouvert toutes les icones et les onglets sans trouver les Variables. J'ai noté que tu utilises la version 2003/2007. Moi j'ai la version 2010. Serait-ce possible qu''il y ait des différences dans la configurations d'Excel ?

J'ai mis en pièces jointes les trois fichiers concernés.

Merci infiniment pour ton aide.

Dans le VBE, ouvrir le menu Fenêtres

Quant à la ligne incriminée, que représente C ? Comment cette variable est-elle alimentée ?

Bonjour,

Merci de ta réponse rapide.

Si j'ai bien compris, C représente la Feuil2 du fichier "Classement".

Si on regarde les données; C.Value <> "", C.Value <> "zz", C.Value <> "0", ce sont les valeurs entrées dans la formule de la colonne A, à partir de la cellule A4, de la Feuil2 du fichier "Classement". La valeur "zz" dans la formule fait en sorte de remplir les cellules vides afin qu'elles demeurent au bas de la page lors du tri. Le "ZZ" et le "0" sont cachés avec une MEFC.

Merci encore pour ton aide.

Si la variable représente une feuille, alors elle ne peut être une colonne !

Vu le .Value, elle devrait représenter une cellule d'une feuille de calculs …

re

Si j'ai bien compris, C représente la Feuil2 du fichier "Classement".

Dans la boucle C représente la valeur de chaque cellule de la colonne A dans la feuille 2 et pas une feuille du classeur

La partie IF C.value ="" ... sert uniquement à vérifier si tu as une donnée en colonne A.

Si oui, le code copie la ligne de la feuille 2 en dernière ligne de la feuille classement

Cordialement

Bonjour,

Marc L; Merci beaucoup pour les renseignements.

Dan; Merci pour la clarification.

Je dois quitter pour trois jours et je n'aurai pas accès à mon fichier. Je ne pourrai pas faire de nouveaux tests avec ce que vous m'avez donné comme informations. Je vais voir dès mon retour.

Je vous remercie encore pour toute l'aide que vous m'apportez.

Bonjour,

Je m'excuse du retard. Je n'avais pas accès à mon fichier pour les derniers jours. Je continu à faire des test sans succès. Je n'arrive pas à éliminer l'erreur 13.

J'ai ajouté les code que tu m'as fournis "On error resume next" et "on error goto 0" mais ça ne fait que changer l'erreur de place. Elle se trouve maintenant à la ligne "If C.Value <> "" And C.Value <> "ZZ" And C.Value <> "0" Then".

Je crois que je vais laisser tomber car je ne suis pas assez avancé en VBA pour résoudre ce problème. Je vais trouver une autre solution pour mon fichier.

Merci beaucoup pour votre aide précieuse. C'est très apprécié.

Rechercher des sujets similaires à "erreur"