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

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

  • Probleme UserForm.xls
    215.5 KB · Affichages: 94
Dernière édition:

job75

XLDnaute Barbatruc
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 :rolleyes:

A+
 

Paf

XLDnaute Barbatruc
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:

Ternoise

XLDnaute Occasionnel
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
 

job75

XLDnaute Barbatruc
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+
 

Paf

XLDnaute Barbatruc
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
 

Paf

XLDnaute Barbatruc
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
 

job75

XLDnaute Barbatruc
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+
 

job75

XLDnaute Barbatruc
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+
 

pierrejean

XLDnaute Barbatruc
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
 

Paf

XLDnaute Barbatruc
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:

job75

XLDnaute Barbatruc
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+
 

Ternoise

XLDnaute Occasionnel
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
 

Discussions similaires

Statistiques des forums

Discussions
312 752
Messages
2 091 661
Membres
105 037
dernier inscrit
Zazou75