Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[RESOLU] Impossible d'ouvrir une 2ème fois mon UserForm

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Ternoise

XLDnaute Occasionnel
Bonjour le Forum

J'ai une erreur d’exécution 13 quand je veux ouvrir mon UserForm une 2ème fois.

Je mets, en pièce jointe, le fichier bloqué !

Pour que l'UserForm fonctionne, il faut enlever une ligne dans "DIRECTION"

Merci de votre aide

Bonne journée

David
 

Pièces jointes

Dernière édition:
Re : Impossible d'ouvrir une 2ème fois mon UserForm

Bonjour Ternoise,

Je ne sais pas ce qu'il faut enlever ou ajouter dans ces codes touffus (c'est un euphémisme).

En tout cas dans la macro RechercheDate vous utilisez UsfSaisie.TextUtilisateur

Apparemment ce contrôle n'existe pas 🙄

A+
 
Re : Impossible d'ouvrir une 2ème fois mon UserForm

bonjour Ternoise, job75

Chez moi l'erreur existe à la première utilisation.
après recherche de la ligne de code qui provoque l'anomalie, on trouve dans la Sub RechercheDate():
Code:
UsfSaisie.TextDate.Value = Format(derdate + 1, "dd/mm/yyyy")

en suivant pas à pas, à un moment derdate vaut 28/02/2013 (je ne sais pas d'où sort cette date); faire + 1 est mal vécu !

la variable derdate n'est pas déclarée (ce n'est pas la seule). Le fait de la déclarer en "Date" règle ce problème.

Je n'ai pas poursuivi les investigations.

A+

Pensez à déclarer vos variables
 
Dernière édition:
Re : Impossible d'ouvrir une 2ème fois mon UserForm

Bonjour le Forum, Job75, Paf

Merci de l'attention que vous portez à mon problème (une nouvelle fois !)

Job 75 :
""En tout cas dans la macro RechercheDate vous utilisez UsfSaisie.TextUtilisateur""
""Apparemment ce contrôle n'existe pas""

Le contrôle "TextUtilisateur" existe, Il est à droite du "TextBox7"

Paf :
""derdate vaut 28/02/2013; faire + 1 est mal vécu !""
Oui en effet, sur certaine année, il y a un problème

Pour les déclarations des variables. Il faut que je regarde comment cela fonctionne.

Merci de votre aide
David
 
Re : Impossible d'ouvrir une 2ème fois mon UserForm

Re, salut Paf,

En fait la TextBox TextUtilisateur existe bien, elle est seulement transparente...

La macro RechercheDate beugue parce qu'en colonne D de la feuille DIRECTION certaines dates sont du texte au lieu d'être des nombres : en D9 D45 D59 D64 D65.

Avec cette macro, ces "dates" qui n'en sont pas seront ignorées :

Code:
Sub RechercheDate()
  tablo = Feuil2.Range("C9:D" & Feuil2.Range("D" & Rows.Count).End(xlUp).Row).Value2
  For n = LBound(tablo, 1) To UBound(tablo, 1)
    If tablo(n, 1) = UsfSaisie.TextUtilisateur Then
      If Val(tablo(n, 2)) > derdate Then derdate = Val(tablo(n, 2))
    End If
  Next
  If derdate > 0 Then
    UsfSaisie.TextDate = Format(derdate + 1, "dd/mm/yyyy")
  Else
    UsfSaisie.TextDate = Format(Date, "dd/mm/yyyy")
  End If
End Sub
PS : la déclaration des variables est une chose assez secondaire.

Mais faut être cohérent : soit on les déclare toutes, soit on n'en déclare aucune.

A+
 
Re : Impossible d'ouvrir une 2ème fois mon UserForm

re,

pour job75: curieusement , chez moi , les dates en colonne D sont toutes au format date

pour Ternoise: lors du premier lancement(pour utilisateur 1) derdate vaut 28/01/2013 et provoque plantage; après déclaration de derdate (Dim derdate As Date en début de macro) derdate vaut 11/12/2013
 
Re : Impossible d'ouvrir une 2ème fois mon UserForm

ne sachant pas quelle date est la bonne, autre essai sans déclaration de derdate:

Code:
 UsfSaisie.TextDate = CDate(derdate) + 1
qui renvoie 28/01/2013 +1=29/01/2013 que la cellule correspondante en colonne D soit texte ou date
 
Re : Impossible d'ouvrir une 2ème fois mon UserForm

Re,

pour job75: curieusement , chez moi , les dates en colonne D sont toutes au format date

Comme beaucoup vous mélangez tout.

Ce n'est pas une question de "format" mais de type de données.

Entrez en E9 (feuille DIRECTION) et tirez vers le bas la formule =ESTNUM(D9)

Les dates Excel, tout le monde devrait le savoir sur ce forum, sont des nombres !!!!

A+
 
Re : Impossible d'ouvrir une 2ème fois mon UserForm

Re,

Pour terminer, je pense que Ternoise ne sait pas comment entrer une date (un nombre) dans une cellule à partir d'une TextBox d'un UserForm.

Dans le code de l'UserForm :

Code:
If Not IsDate(TextBox1) Then _
  MsgBox "Date non valide !": TextBox1.SetFocus: Exit Sub
[A1] = CDate(TextBox1) 'cas de la cellule A1
Le format de la cellule n'a aucune importance : on formate la colonne comme on veut avant ou après.

A+
 
Re : Impossible d'ouvrir une 2ème fois mon UserForm

Re

Pour ce qui me concerne , j'observe un fonctionnement après mise en commentaire de Call RechercheDate dans Initialize
Par ailleurs nécessite d’être dans une feuille Utilisateur
 
Re : Impossible d'ouvrir une 2ème fois mon UserForm

Re

Salut Gerard
Ayant commis cette macro , je me refusais inconsciemment à l'incriminer !!!

A tester:

Code:
Sub RechercheDate()
  tablo = Feuil2.Range("C9:D" & Feuil2.Range("D" & Rows.Count).End(xlUp).Row)
  For n = LBound(tablo, 1) To UBound(tablo, 1)
    If tablo(n, 1) = UsfSaisie.TextUtilisateur Then
      If tablo(n, 2) > derdate Then derdate = tablo(n, 2)
    End If
  Next 
  If derdate > 0 Then
    UsfSaisie.TextDate = Format(CDate(derdate) + 1, "dd/mm/yyyy")
  Else
    UsfSaisie.TextDate = Format(Date, "dd/mm/yyyy")
  End If
End Sub

Il me semble me souvenir avoir eu des soucis avec des dates dans les tableaux
 
Re : Impossible d'ouvrir une 2ème fois mon UserForm

re,

pour job75 : je vous remercie de votre aimable mise au point.

pour Ternoise: je confirme, le code proposé plus haut :

Code:
UsfSaisie.TextDate = CDate(derdate) + 1
voire
Code:
UsfSaisie.TextDate = Format(CDate(derdate) + 1, "dd/mm/yyyy")
fonctionne et permet surtout d'éviter de ne pas traiter les données de mauvais type. (ce qui n'empêche pas de les saisir correctement !)

Bonne journée
 
Dernière édition:
Re : Impossible d'ouvrir une 2ème fois mon UserForm

Re Pierre,

Je ne pense pas que ta solution soit la bonne.

Soit on prend la solution de mon post #5 (qui ignore les valeurs textes) soit on prend :

Code:
Sub RechercheDate()
  tablo = Feuil2.Range("C9:D" & Feuil2.Range("D" & Rows.Count).End(xlUp).Row)
  For n = LBound(tablo, 1) To UBound(tablo, 1)
    If tablo(n, 1) = UsfSaisie.TextUtilisateur Then
      If IsDate(tablo(n, 2)) Then _
        If CDate(tablo(n, 2)) > derdate Then derdate = CDate(tablo(n, 2))
    End If
  Next 
  If derdate > 0 Then
    UsfSaisie.TextDate = Format(derdate + 1, "dd/mm/yyyy")
  Else
    UsfSaisie.TextDate = Format(Date, "dd/mm/yyyy")
  End If
End Sub
Mais la meilleure solution est que Ternoise ait de vraies dates en colonne D, voir mon post #9.

A+
 
Re : Impossible d'ouvrir une 2ème fois mon UserForm

Je vous laisse entre expert ...!

Sinon, oui j'aimerais des vrais dates et vrais horaires dans les colonne puisque après je vais travailler avec celle-ci.

Je reste donc pour l'instant en attente d'une solution final !!

Bien à vous tous le monde
Merci à tous.
David
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
907
Réponses
2
Affichages
890
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…