Erreur de compilation dans le module caché : Fonctions

Phoebe33

XLDnaute Nouveau
Bonjour à tous,

Dans le cadre de notre travail, nous nous servons d'un outil Excel (qui a plusieurs fonctionnalités : scoring complexe, recherche et retraitement de données, mise en forme, impression "dynamique", formulaire, ...).
Jusqu'à présent, il n'était utilisé que sur un seul site et n'a pas connu de bug depuis sa mise en service il y a 6 mois.

Or, j'ai eu à montrer l'outil sur un 2ème site et j'ai eu l'erreur "Erreur de compilation dans le module caché : Fonctions". La suite du message indique que c'est sûrement du à la version de l'application. D'autres recherches effectuées sur le forum disent que cela peut être dû aux compléments. Ceci étant, les discussions ouvertes concernent toutes (pour celles que j'ai trouvées) des erreurs de compilation autres que "Fonctions", telles que "ThisWorkbook" ou "formules".

Cependant, j'ai essayé de vérifier les deux versions (2010 32 bits) qui sont strictement identiques ainsi que les compléments un à un qui le sont aussi. Le programme continue de tourner normalement sur le 1er site.

Auriez-vous une idée ?

Je vous remercie par avance pour votre aide.

Cordialement.
 

Phoebe33

XLDnaute Nouveau
Re : Erreur de compilation dans le module caché : Fonctions

Je me rends compte que c'est plus facile avec le fichier. Je ne peux toutefois pas le transmettre, travaillant dans un secteur plutôt sensible. Cependant, un seul bouton dysfonctionne, il lance le code suivant :

Sub Générateur_fiches()
Application.ScreenUpdating = False
Dim NUMDOSSIER As String
Application.DisplayAlerts = False 'bloque les demandes de choix pour l'utilisateur type Suppression d'une feuille Oui/non
Sheets("Fiche_contrepartie").Select
Call Unprotect
NUMDOSSIER = Range("F1").Value 'correspond à la sélection de l'utilisateur en case F1

DERNIEREFEUILLE = Sheets.Count 'calcule quelle est la dernière feuille

Sheets("Fiche_contrepartie").Copy After:=Sheets(DERNIEREFEUILLE) 'copie après la dernière feuille

If Not FeuilleExiste(NUMDOSSIER) Is Nothing Then Sheets(NUMDOSSIER).Delete 'test pour savoir si la feuille existe déjà, ramène à la fonction ci-dessus, et détruit la feuille le cas échéant

Sheets("Fiche_contrepartie (2)").Select 'sélectionne la feuille créée
If NUMDOSSIER <> "" Then Sheets("Fiche_contrepartie (2)").Name = NUMDOSSIER
If NUMDOSSIER = "" Then
MsgBox "Vous n'avez pas sélectionné de dossier dans le menu déroulant en haut à droite... Non mais franchement... Où aviez-vous la tête, c'est le travail toute cette pression ? Allez ! On arrête de s'endormir et on se reconcentre ! :)", vbExclamation
Sheets("Fiche_contrepartie (2)").Delete
Sheets("Fiche_contrepartie").Select
Call Protect
Exit Sub
End If 'appelle la feuille tel que défini par l'utilisateur

Dim Bouton As Variant
For Each Bouton In ActiveSheet.Shapes
Bouton.Delete
Next Bouton

Sheets("Fiche_contrepartie").Select
ActiveSheet.Shapes.Range(Array("Picture 2", "Picture 1", "Picture 3")). _
Select
Selection.Copy
Call Protect
Sheets(NUMDOSSIER).Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Cells.Select
Range("A1").Activate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E1:F1").Select
Selection.Delete Shift:=xlToLeft
Range("D1:F1").Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
Selection.Merge
Range("D1:F1").Select
ActiveCell.FormulaR1C1 = _
"Note : fiche au format ""final"", vous pouvez, si vous le souhaitez l'imprimer, la modifier et/ou l'enregistrer."
Range("D1:F1").Select
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

La fonction Feuilleexiste a le code suivant :
Function FeuilleExiste(f As String) As Worksheet
On Error Resume Next
Set FeuilleExiste = Worksheets(f)
End Function

Tout le reste fonctionne.

Est-ce que ces informations vous suffisent ?
 

Staple1600

XLDnaute Barbatruc
Re : Erreur de compilation dans le module caché : Fonctions

Re


J'avais bien précisé ... ;)
Te suggérer de joindre un fichier exemple anonymisé contenant le code VBA

Il suffit donc de créer un fichier exemple avec des données bidons.
Ce qui compte par contre c'est que l'on dispose du code VBA.

A moins que tu considères que ton code VBA est lui aussi confidentiel ;)
 

Phoebe33

XLDnaute Nouveau
Re : Erreur de compilation dans le module caché : Fonctions

Non le code VBA n'est pas confidentiel :eek:. Sur toutes les feuilles il y a des références à l'entreprise, ses process ou autres. Mais il est vrai qu'en supprimant toutes les données, il est anonyme. Du coup, j'ai vraiment tout supprimé ! En même temps, il n'y a que comme ça que je ne dépasse pas la taille autorisée 293ko.
J'ai également supprimé des références sur des objets dans le code mais que pour des parties qui fonctionnent.
Dans le fichier joint, le mot de passe a été changé pour 123 pour se connecter en "Administrateur". Le dysfonctionnement se produit lorsqu'on clique sur le bouton Générer la fiche dans la feuille Fiche_contrepartie (avant de générer il faut rentrer un nombre en F1).
J'espère que ça conviendra je ne pense pas pouvoir faire mieux.



Merci par avance.
 

Pièces jointes

  • PME_anonyme.xlsm
    231.1 KB · Affichages: 61
  • PME_anonyme.xlsm
    231.1 KB · Affichages: 85
  • PME_anonyme.xlsm
    231.1 KB · Affichages: 87

Staple1600

XLDnaute Barbatruc
Re : Erreur de compilation dans le module caché : Fonctions

Re

Question:
Quels sont les OS sur les deux PCS?

*: A première vue, tes variables ne sont pas toutes déclarées.
Pourquoi?

*: Exemple par de Dim pour DERNIEREFEUILLE dans le module Générateur_fiche

PS: J'ai des problèmes pour tester car chez moi :Liste_Echantillon affiche:
=DECALER(Grille_Dossier!#REF!;0;0;NBVAL(#REF!#REF!))


Suggestion:
Tu peux amender ton code en supprimant tous ces Select et Activate.
 

Phoebe33

XLDnaute Nouveau
Re : Erreur de compilation dans le module caché : Fonctions

Re,

Les deux OS sont exactement les mêmes, à savoir Windows 7 Entreprise.

Pourquoi les variables ne sont-elles pas toutes déclarées ?... Euh, ben je débute... et je suis autodidacte... alors je fais pas tout bien.... je sais :eek:
Pour autant, ça fonctionne très bien sur le 1er site.

Pour la liste des échantillons, ça te renvoie cela c'est normal vu que j'ai tout supprimé. Néanmoins, la cellule n'est pas verrouillée alors tu peux taper un chiffre dans la cellule F1. La liste va juste chercher ce qu'il y a normalement dans les grilles (que j'ai supprimées).
 

Staple1600

XLDnaute Barbatruc
Re : Erreur de compilation dans le module caché : Fonctions

Re

C'est ce que j'ai fait.
j'ai tapé un chiffre mais et c'est logique le code VBA plante* ;) mais pas de message d'erreur identique au tien
*: en commentant les lignes idoines, j'évite le plantage, mais pour le moment toujours ce message
Erreur de compilation ...

PS
: Le fait de débuter n'explique pas pourquoi tu déclares certaines variables et pas d'autres ;)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Erreur de compilation dans le module caché : Fonctions

Re


Suggestion:
J'essaierai de manipuler le classeur en commentant les lignes concernant la croix rouge de Userform pour voir ce qui se passe.

Donc modifier ainsi
Code:
Private Sub UserForm_Initialize()
'OteCroix Me
End Sub
et aussi pour aller un peu plus loin dans l'idée
Code:
'''FONCTION LIE A LA MISE EN FORME DES USERFORM EN LIEN AVEC LA MACRO OTECROIX
''Declare Function GetWindowLongA Lib "user32" _
''(ByVal hwnd As Long, ByVal nIndex As Long) As Long
''
'' Declare Function SetWindowLongA Lib "user32" _
''(ByVal hwnd As Long, ByVal nIndex As Long, _
''ByVal dwNewLong As Long) As Long
''
'' Declare Function FindWindowA Lib "user32" _
''(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
''
''Public Transfer(6) As String
''Sub OteCroix(UF As UserForm)
''Dim hwnd As Long
''    'Fonction qui enlève la croix rouge des UserForm, mettre OteCroix Me pour l'utiliser
''        hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") _
''    & "Frame", UF.Caption)
''    SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
''End Su
 
Dernière édition:

Phoebe33

XLDnaute Nouveau
Re : Erreur de compilation dans le module caché : Fonctions

Ah oui le code plante :D. Mais il me semble que c'est du à la ligne de code qui apparaît en débogage (il y avait des images que VB prenait sur la fiche contrepartie pour copier sur la nouvelle fiche). Une fois retraité, cela ne bug plus. Je t'ai remis le fichier avec les mauvaises lignes supprimées.

PS : alors si, débuter peut l'expliquer parce qu'au début on écrit sans déclarer (version sauvage avec l'enregistreur de macros) puis au fur et à mesure qu'on avance on fait mieux !!! ;)

Suggestion : je n'ai pas compris ce que tu entends par manipuler le classeur pour les croix rouges des UF, je n'ai pas l'impression qu'il pose problème.
suggestion d'avant : oui en effet, le code serait mieux sans tous ces select et activate.
 

Pièces jointes

  • PME_anonyme.xlsm
    232.1 KB · Affichages: 75
  • PME_anonyme.xlsm
    232.1 KB · Affichages: 70
  • PME_anonyme.xlsm
    232.1 KB · Affichages: 67

Phoebe33

XLDnaute Nouveau
Re : Erreur de compilation dans le module caché : Fonctions

Désolé, je pense que j'écrivais pendant que tu répondais. Du coup, je prends connaissance de ton message que maintenant.

J'ai compris pour les croix rouges je vais essayer (il faut que j'aille sur le 2ème site... parce que chez moi tout fonctionne !) et te dis ça. Sinon, il semble que ce soit difficile à comprendre ce satané message d'erreur.

En tout cas, à nouveau merci pour ton aide.
 

Phoebe33

XLDnaute Nouveau
Re : Erreur de compilation dans le module caché : Fonctions

Je vais essayer mais en même temps je me dis que ce code qui sert à enlever les croix des UF fonctionnent également sur le deuxième site puisque les UF s'affichent sans croix... C'est vraiment sur la génération de fiches que ça plante. Et la seule fonction utilisée dans cette partie est la fonction N°FEUILLE peut être ça ?
 

Staple1600

XLDnaute Barbatruc
Re : Erreur de compilation dans le module caché : Fonctions

Re


Précisions
Puisque le message d'erreur précises Fonctions et que ton projet VBA contient un module nommé Fonctions on sait que c'est dans celui-ci qu'il y a un potentiel problème.

Un moyen simple de chercher à l'isoler, c'est de commenter tout le code VBA de ce module, puis de décommenter les procédures une par une, jusqu'à trouver où se situe la source de l'erreur.

C'est une des façons que j’utiliserai pour ce faire.
 

Discussions similaires

Réponses
3
Affichages
714

Statistiques des forums

Discussions
314 628
Messages
2 111 333
Membres
111 103
dernier inscrit
Maxime@mar