formulaire/macros bug cdate

anbert

XLDnaute Nouveau
Bonjour à tous,

Vos postes m'ont beaucoup aidé à progresser dans mon utilisation quotidienne d'excel.
Ce jour, je ne m'en sors malheureusement plus seul, il me faut donc passer de l'autre côté de l'écran et poster.
J'espère trouver les bons mots.

J'utilise un fichier excel comme base de donnée pour enregistrer des cas avec des problématiques qualités.
Ma première colonne est l'indexe avec les cas incrémentée (2018-001 / 2018_002 etc).
La seconde colonne sert à dire quand est enregistré le cas (08/02/2018). Elle est au format date, france.
La troisième colonne est de même type avec date de validation.

Pour les saisies, j'ai un formulaire.
Chaque entrée, ligne par ligne est donc faite via le formulaire.
Mon formulaire est créé pour permettre une édition, et donc des modifications.
L'enregistrement initial fonctionne sans problème.

Lors de l'édition, je viens donc récupérer la donnée du champs, que j'affiche dans le formulaire.
Tout fonctionne niquel sur excel 2016 PC.
Tout fonctionne niquel sur mac excel 2011.
Par contre, sur UN mac, j'ai un bug.
Le champ ne m'affiche pas 08/02/2018 mais 08/02/
Et si je tente d'utiliser la macro me permettant la modification, il bug au niveau de la formule Cdate(valdate) associée à la seconde colonne.
J'ai supprimé une grosse partie des champs associés aux variables pour plus de clareté dans le code.

Je ne comprends pas pourquoi celà fonctionne sur certains ordinateur et pas d'autres. A priori marchant sur une majorité, j'exclus le code...
Une configuration du mac ?
Tout est réglé selon format france.

Code:
Private Sub CMD_CORRIGER_Click()

Worksheets("Deviation").Select
Call Deprotection

Dim Service_declarant, Service_occurence, produit1, lot1, Forme1, unite1, produit2, lot2, _
forme2, unite2, machine, Ligne_Secteur, _
nature, NFDD, cause, affectation1, affectation2, cotation_F, cotation_G, _
cotation_ND, _
cotation_CR, action_bloquante, fournisseur, _
actions, evaluation, commentaires, _
fiche_litige, ACO, FD, investigation, classification, retour, valdate, dateprod, datepraq, datesaisie, DateRS, date_ouverture As String
Dim duree As Double


If Me.TXT_DATEPNEWFDD <> "" Then
    If Me.TXT_DATEPNEWFDD <> Me.LA_DATE Then
    valdate = Me.TXT_DATEPNEWFDD
    End If
Else
    valdate = Me.LA_DATE.Caption
End If
Service_declarant = Me.LD_DECLARANTPNOT.Value
Service_occurence = Me.LD_OCCURENCEPNOT.Value
produit1 = Me.LD_PRODUIT1PNOT.Value
dateprod = Me.TXT_RSPVAL.Text
datesaisie = Me.LA_DATESAISIE.Caption
date_ouverture = Me.TXT_DATEPNEWFDD.Value



Worksheets("Deviation").Select
Range("FDD").Select
Do Until ActiveCell.Value = ""
    If TXT_NFDD.Text = ActiveCell.Value Then
ActiveCell.Offset(0, 1).Value = CDate(valdate)
ActiveCell.Offset(0, 2).Value = CDate(dateprod)
If datepraq <> "" Then
    ActiveCell.Offset(0, 3).Value = CDate(datepraq)
End If
ActiveCell.Offset(0, 4).Value = Service_declarant
ActiveCell.Offset(0, 5).Value = Service_occurence
ActiveCell.Offset(0, 6).Value = produit1
ActiveCell.Offset(0, 36).Value = datesaisie

Exit Do
    End If
ActiveCell.Offset(1, 0).Select
Loop


Unload F_SAISIE
   Load F_SAISIE
      F_SAISIE.Show


ActiveWorkbook.save

Worksheets("Deviation").Select
Call Protection

End Sub
 

anbert

XLDnaute Nouveau
Bonjour Roland,

Je viens de tester.
La box m'affiche bien la date telle qu'entrée (01/02/2001)
J'ai intégré tes tests directement au code pour voir le résultat :
- pour la première ligne, j'ai l'affichage, mais toujours le bug de l'année
- Pour la seconde, débuggage

wcp5.png

3xpk.png

rje4.png
lxny.png
8q3l.png
 

Roland_M

XLDnaute Barbatruc
bonjour

si ta variable est bien ValDate, essayes d'afficher comme ceci pour voir le détail de cette var !

MsgBox "valeur=" & ValDate & vbLf & "Jour=" & Day(ValDate) & vbLf & "Mois=" & Month(ValDate) & vbLf & "Année=" & Year(ValDate)


EDIT:

ValDate est déclaré comment ?
As Date
As Variant
As String

ou extrait d'un contrôle exemple TextBox auquel cas c'est du String !
 
Dernière édition:

cp4

XLDnaute Barbatruc
Bonjour Anbert:), Roland_M;),

Je n'ai jamais travaillé sur un mac. Cependant, je te propose d'utiliser Value2 au lieu de Value.
En effet, VBA fonctionne avec les dates US et Excel avec les paramètres régionaux (Fr dans notre cas).
Voilà, c'est une astuce de Laetitia90 (que je salue;) au passage) que j'ai essayé et fonctionne pour les dates (plus d'inversion mois/jour) et pour les nombres décimaux (virgule ou point).

valdate est déclarée en variant, essaie comme ceci valdate = CDate(Me.LA_DATE.Caption)

Sans fichier, on ne peut que te faire des propositions non testées.

Bon week-end.
 

anbert

XLDnaute Nouveau
Bonjour à vous deux.

valdate est en string.

CP4, j'ai intégré ta modif. Le we je suis sur PC, et le script fonctionne bien. La modif n'a rien changé, je l'ai donc laissé. Je te communiquerai les résultats avec le Mac problématique dès demain.
Pour value2, vous m'apprenez encore des chose !
Par contre, dois-je l'appliquer uniquement à mes variables de date ?
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

Avec les dates, on peut avoir des surprises
D'où l'importance des déclarations des variables
VB:
Sub test_PasOK()
Dim valdate As String
valdate = "test"
MsgBox Format(CDate(valdate), "dd/mm/yyyy")
End Sub
Sub test_OK()
Dim valdate As Date
valdate = Date
MsgBox Format(valdate, "dddd dd mmmm yyyy")
valdate = #11/2/2018#
MsgBox Format(valdate, "dddd dd mmmm yyyy")
valdate = #2/11/2018#
MsgBox Format(valdate, "dddd dd mmmm yyyy")
End Sub
 

anbert

XLDnaute Nouveau
Bonjour à tous,

CDate(Me.LA_DATE.Caption) --> Ne change rien, bug toujours présent.
Value2 appliqué aux date (plus modif précédente) change l'affichage. Je suis passé pour l'affichage de la date d'ouverture à un nombre entier. L'affichage n'a pas changé pour la date de saisie.

Staple1600 :
La première partie du code amène à un débogage (je pense que l'on s'en doutait).
La seconde partie fonctionne correctement. j'ai donc passé ma variable valdate en date, mais problème toujours présent.

Je vous joins le fichier, en espérant que le code soit compréhensible.
mdp : qfdd
mdp macros : qfddmacro

bonne journée à vous
 

Pièces jointes

  • FDD_2018_TEST.xlsm
    283.9 KB · Affichages: 39

cp4

XLDnaute Barbatruc
Et si tu nous disais comment tu t'y prends pour utiliser ton userform.

qfdd n'est pas le bon password pour la validation.

Je n'ai pas eu ton bug.
Comment fais-tu pour voir tous les contrôles de ton userform.
Pas facile de se retrouver dans ton usine à gaz.

@+
 
Dernière édition:

anbert

XLDnaute Nouveau
Au temps pour moi cp4 :s.

A l'ouverture du fichier, il est demandé si l'on veut enregistrer une FDD. Mettre oui.
Celà amène à l'userform.
Il est possible d'y accéder également via le bouton "afficher formulaire".
Là, deux possibilités :
- Créer une FDD, dans ce cas mettre une date dans le champs "date ouverture" et cliquer sur OK puis dérouler les onglets suivants jusqu'à l'onglet N°2. Sauvegarder via le bouton "saisir" après avoir mis le mdp qfdd
- Editer (et c'est là que j'ai le problème sur un mac). Dans ce cas saisir un n° de FDD (2018-001 par exemple) et cliquer sur OK pour qu'il le charge. Sur le mac en question, tu te retrouves avec les captures que j'ai fournis plus haut. Si les autres ordinateurs PC/Mac sur lesquels je test.
 

cp4

XLDnaute Barbatruc
A priori, ce sont mes variables associées aux dates qui plantent ?
J'ai passé la valdate en date, sans réussite.
Désolé, dans cette procédure Private Sub CMD_MODIFIER_Click(), valdate est un variant
En effet, quand on déclare une variable sans rien mettre à la suite implicitement c'est un variant.
exemple: Dim valdate

Tu dois la déclarer Dim valdate as Date dans toutes les procédures.

@+
 

Roland_M

XLDnaute Barbatruc
Bonjour,

moi non plus j'ai pas bien tout compris ni où le probème peut se produire exactement
mais peu importe puisqu'on ne verra cette erreur que sur Mac, alors . . .

il faudrait définir des VARs formats dates et des VARs string

et pour éviter le souci sur Mac il suffit de te servir de var string !

exemple si j'ai:
MaVarDate qui est = "01/02/2018"
MaVarDateString = MaVarDate

Msgbox MaVarDateString affichera bien "01/02/2018"
 

Discussions similaires

Réponses
21
Affichages
975

Statistiques des forums

Discussions
312 189
Messages
2 086 031
Membres
103 101
dernier inscrit
CyberAlex93