Mettre à jour plusieurs textbox en même temps
Bonsoir les amis
Je n'arrive pas à mettre à jour plusieurs textbox contenue dans une frame :
En fait si je rentre toutes mes valeurs dans toutes les texbox et que je décide d'en modifier une ( heure de début par exemple) cela ne marche pas... J'ai utilisé un private sub after uptdate pour chaque textbox mais cela a l'air de fonctionner uniquement pour la textbox date de début....
Pouvez vous m'aider?
Merci d'avance
nb : voici le fichier :
bonsoir,
essaye Private Sub textbox_heure_1_Change
Bonsoir, kingfadhel
Non j'ai déjà essayé ca ne marche pas malheureusment ;(
Bonjour
Tu as 2 choses à faire
Faire ce qu'a dit kingfadhel remplacer toutes tes macros AfterUpdate par Change
Ensuite modifies la macro calcul
Sub Calcul()
'1.5 - Incrémentations des valeurs
If Not IsDate(Mid(textbox_date_1, InStr(1, textbox_date_1, " ") + 1)) Then Exit Sub
If Not IsDate(Me.textbox_heure_1) Then Exit Sub
textbox_date_2 = Format(TimeSerial(Val(textbox_durée), 0, 0) + CDate(Mid(textbox_date_1, InStr(1, textbox_date_1, " ") + 1)) + CDate(textbox_heure_1), "dddd dd mmmm yyyy")
textbox_heure_2 = Format(TimeSerial(Val(textbox_durée), 0, 0) + CDate(Mid(textbox_date_1, InStr(1, textbox_date_1, " ") + 1)) + CDate(textbox_heure_1), "hh:mm")
textbox_date_1.Value = Format(textbox_date_1, "dddd dd mmmm yyyy")
End SubJuste un avis personnel : Tu aimes te compliquer la vie
Merci encore banzai...Cela marche parfaitement...à un détail près cette fois, bien que je pense que ce soit de la faute de ma macro :
Si l'utilisateur décide de remplir textbox_heure_1 avant textbox_jour_1, cela bug au moment de rentrer l'année dans textbox_jour_1
( ie : au lieu de taper 6 caractères comme demandé, "1 1 13" par ex on ne peut taper que 5 caractères : "1 1 1", la la textbox en question convertit 1 1 1 en date avant d'avoir pu inscrire le 3 du "13")
Du coup j'ai pensé, pour régler le problème, instaurer des textbox.enlabled = false mais je ne sais pas où les placer...
D'autre part ta fonction calcul marche très bien mais je n'arrive pas à la comprendre... Est ce cela :
'verifie si le contenu de la textbox à partir du 1er caractère vide +1 est une date
If Not IsDate(Mid(textbox_date_1, InStr(1, textbox_date_1, " ") + 1)) Then Exit Sub
'je comprend cette ligne mais je ne comprend pas la différence avec seulement quelque chose comme ça par ex :
if not isdate(textbox_date_1) then exit sub
' ( cette fonction ne marche pas évidement contrairement à la tienne, comme tu me l'as démontré )
'verifie si le contenu de la texbox est une date ( heure en l'occurance)
If Not IsDate(Me.textbox_heure_1) Then Exit Sub
' timeserial et val servent ici à dire " ce qui ce trouve dans textbox_durée est une heure"
textbox_date_2 = Format(TimeSerial(Val(textbox_durée), 0, 0) + CDate(Mid(textbox_date_1, InStr(1, textbox_date_1, " ") + 1)) + CDate(textbox_heure_1), "dddd dd mmmm yyyy")
'mais je ne comprend pas non plus quelle erreur(s) cela évite...
'même principe
textbox_heure_2 = Format(TimeSerial(Val(textbox_durée), 0, 0) + CDate(Mid(textbox_date_1, InStr(1, textbox_date_1, " ") + 1)) + CDate(textbox_heure_1), "hh:mm")nb : Je reconnais que ma macro est plus compliqué qu'elle ne devrait l'être mais c'est un fichier du boulot et je "dois" me conformer à la structure : " 2 colonnes = 1 jour"...entre autre
Bonjour
Les macro sont faites de telle sorte que chaque modification entraine le "calcul"
La date est reconnue comme telle bien avant de l'avoir complétement entrée
Reste plus qu'à effacer le dernier caractère pour le remplacer par la bonne année
Essayes (je n'ai pas testé) avec AfterUptade ou Exit
ced_le_dingue a écrit :If Not IsDate(Mid(textbox_date_1, InStr(1, textbox_date_1, " ") + 1)) Then Exit Sub
'je comprend cette ligne mais je ne comprend pas
Pourtant la raison vient de là : https://forum.excel-pratique.com/excel/couper-chaine-a-partir-du-1er-chiffre-trouve-t44926.html
ced_le_dingue a écrit :textbox_date_2 = Format(TimeSerial(Val(textbox_durée), 0, 0) + CDate(Mid(textbox_date_1, InStr(1, textbox_date_1, " ") + 1)) + CDate(textbox_heure_1), "dddd dd mmmm yyyy")
'mais je ne comprend pas non plus quelle erreur(s) cela évite...
C'est pour éviter le problème évoqué ici https://forum.excel-pratique.com/excel/convertir-variable-en-min-t44881.html
C'est vrai que j'ai été con de pas + me plonger sur mes anciennes questions... j'ai compris les réponses que tu m'avais donné mais j'ai visiblement pas assimilé la logique et tout ce qui s'imbrique autour. Je vais m'y mettre + sérieusement. Sincèrement désolé.
Merci pour ta patience banzai
nb: je vais regler le soucis de maj de mes textbox en suivant tes conseils