Erreur de compilation. Membre de méthode ou de données introuvables

J’ai créer en 2012 un fichier de saisie pour faire des factures et payes.

Je voudrais faire revivre ce fichier.

J'avais 24 périodes de payes que j'ai changé pour 26 périodes, qui commence du 2 jan au 15, du 16 au 29 jan.

Maintenant quand je lance Création d'une facturation annuelle, j'obtiens des erreurs de Compilation avec .Show sur plusieurs pages, je ne sais ou donner de la tête.

Sub Nouveau_dossier_annuel()

Dim Nom_nouveau_dossier As String
Dim Nom_ficher_base As String, i As Integer, j As Integer
Dim Mois_Récap_DAS As String

Application.ScreenUpdating = False

' A GARDER EN MEMOIRE : Si le code a été stoppé en cours de route, il se peut qu'il ne
' fonctionne plus par la suite, probablement car les Application.DisplayAlerts
' sont restés sur une position incorrecte. Il faut alors fermer le fichier de
' base et recommencer
' Un des problèmes qui pourrait survenir serait par exemple que les fichiers
' "Paye" ne soient pas tous créés (ou créés puis écrasés ?)

' Dans le même esprit, et par sécurité, on vide au préalable les cellules Z1 et AA1
Sheets("Périodes").Range("Z1:AA1").ClearContents

'Contrôle que tous les employés ont un code fiscal
For i = 2 To Range("I1").End(xlDown).Row ' Tous les employés
If Range("Y" & i) = "" Or Range("Z" & i) = "" Then
MsgBox ("Il manque des codes pour certains collaborateurs dans les colonnes Y et Z")
Exit Sub
End If
Next i

Flag = False

Nom_ficher_base = ThisWorkbook.Name

UserForm1.Show 'On charge la variable "Année"

Besoin de votre coup d'oeil.

OSCAR

Bonjour,

Que la macro s'arrête sur la ligne "UserForm1.Show" ne signifie pas forcément que l'erreur soit à cet endroit, pour le vérifier, exécutez votre macro en pas à pas avec F8, vous verrez bien où se situe l'erreur.

Sans fichier à disposition, difficile d'en dire davantage.

Cdlt

Je peux faire suivre le fichier si vous désiré.

Si oui, dites moi comment le faire svp

Dans votre réponse, cliquez sur l'icône cerclée de rouge, et sélectionnez le fichier(mais avant cela, remplacez toutes les données confidentielles par des noms bidons)

image

Il n'y a rien de confidentiel dans ces fichiers.

Facile.

Ton fichier ne contient aucun formulaire.

UserForm1.Show signifie une demande d'ouverture du formulaire nommé, ici, "UserForm1". Ce formulaire n'existant pas le code te retourne une erreur. D'ailleurs tu as plusieurs fois ce cas dans ton code.

image

Normalement quand un fichier Excel contient des formulaires ceux-ci sont regroupés sous la partie "Feuilles". Pour l'exemple voici comment devrait apparaitre tes formulaires. "UserForm6" est un formulaire bidon que je viens de créer dans ton fichier. Tu vois qu'il apparait dans le groupe "Feuilles" mais surtout qu'il n'y en a pas d'autres.

image

On note toutefois que tu as bien des objets nommés "UserForm1" à "UserForm6", qui ne sont pas des formulaires, contenant du code qui semble compatible à du code placé dans les objets de formulaires... Bizarre. A mon avis ton fichier est altéré. Je pense que ces objets sont d'anciens formulaires qui ne sont plus reconnus comme tel maintenant. On n'en retrouve que le code et pas la partie visuelle.

Édit : dans ce fil https://forum.excel-pratique.com/excel/erreur-423-show-198505 tu sembles utiliser LibreOffice. Comment as-tu créé ce fichier ? Avec Excel ou LibreOffice ?

Si c'est un fichier Excel (je dis bien Excel, je ne parle pas de l'éventuelle option "enregistrer sous format Excel" de LibreOffice) alors pour moi tu as une altération quelque part. Si tu as utilisé LibreOffice alors je te laisse voir avec les pros de LibreOffice.

Dans tous les cas, tel quel, tu ne peux pas appeler des formulaires qui n'existent pas.

J'ai créer ce fichier avec excel 2003, par la suite j'ai fais qq modifications avec libre office. Maintenant j'ai excel 360.

Par contre la 1ere erreur, me renvoie charge la variable année. Lors de la création d'une facturation annuelle, pop up qui demande pour quelle année, après l'inscription de 2025, il me demande de liquider l'année 2024.

Sub Nouveau_dossier_annuel()

Dim Nom_nouveau_dossier As String
Dim Nom_ficher_base As String, i As Integer, j As Integer
Dim Mois_Récap_DAS As String

Application.ScreenUpdating = False

' A GARDER EN MEMOIRE : Si le code a été stoppé en cours de route, il se peut qu'il ne
' fonctionne plus par la suite, probablement car les Application.DisplayAlerts
' sont restés sur une position incorrecte. Il faut alors fermer le fichier de
' base et recommencer
' Un des problèmes qui pourrait survenir serait par exemple que les fichiers
' "Paye" ne soient pas tous créés (ou créés puis écrasés ?)

' Dans le même esprit, et par sécurité, on vide au préalable les cellules Z1 et AA1
Sheets("Périodes").Range("Z1:AA1").ClearContents

'Contrôle que tous les employés ont un code fiscal
For i = 2 To Range("I1").End(xlDown).Row ' Tous les employés
If Range("Y" & i) = "" Or Range("Z" & i) = "" Then
MsgBox ("Il manque des codes pour certains collaborateurs dans les colonnes Y et Z")
Exit Sub
End If
Next i

Flag = False

Nom_ficher_base = ThisWorkbook.Name

UserForm1.Show 'On charge la variable "Année"

If Flag_bis = True Then 'C'est à dire si l'on a cliqué sur "Annuler" dans la UserForm1 ou s'il y avait des erreurs dans la saisie du UserForm1.TextBox1
Flag_bis = False
Exit Sub
End If

OK. Je dirais donc que c'est son passage dans LibreOffice a altéré ton fichier.

Essaye de réimporter ces formulaires à partir du fichier d'origine.

Donc je dois me retapper ma modification de 24 à 26 périodes?

Tu dois te retaper tout ce qui a attrait au visuel de tes formulaires. Y compris leur recréation si tu ne peux pas les récupérer à partir d'un ancien fichier.

Bon j'ai retrouvé ma base de facturation qui fonctionne. Mon fichier est trop volumineux 4.5Mo, voici en zip

J'aimerais ajouter des champs à mon formulaire de SAISIE

J'aimerais avoir vote aide svp

Date du transport

Saisie ''Facture''

Prix Clients

Prime de risque Client .... champ de texte

Prix Prime de risque Client ... $

Temps supplémentaire Client .... champ de texte

Prix temps supplémentaire Client .... $

Parcourt

Tarif / Kilomètre

Saisie Paye = Saisie ''Facture'' .... champ de texte

Prime de risque Homme de service = Prime de risque Client .... champ de texte

Prix Prime de risque Homme de service ... $

Temps supplémentaire Homme de service .... champ de texte = Temps supplémentaire Client

Prix temps supplémentaire Homme de service .... $

Rechercher des sujets similaires à "erreur compilation membre methode donnees introuvables"