Rapatrier une formule dans le textbox d'un userform

michelbra

XLDnaute Nouveau
Bonjour à tous,
J'aurais besoin de votre aide.

J'ai une feuille, contenant des dates qui sont calculées chacune x temps après la date précédante.
Donc, à priori, à part la première date, toutes sont automatiques.

De temps à autre, je change une date en tapant dans une cellule une date au format dd.mm.yyyy. Dès lors, toutes les dates qui suivent sont recalculées.

Je voulais faire cela depuis un userform.
Lorsque j'ouvre mon fichier depuis le masque, mes formules n'apparaissent pas dans les textbox, mais à la place j'ai : 00:00:00 (format heure à la place de ma formule).
Au moment où je sauve mon fichier, toutes mes formules disparaîssent, remplacées par un 0, sur ma feuille de données.

Comment faire pour que ma formule soit reprise dans ma textbox (éventuellement cachée) de manière à ce qu'ensuite, lors de la sauvegarde, cette formule se retrouve à nouveau à sa place dans la feuille de données ?
Ou alors, peut-être ce serait plus facile, comment faire pour que, s'il y a une formule dans la case, si je n'entre rien dans la textbox correspondante, cela n'écrive rien dans la cellule de ma feuille de données, afin de ne pas y effacer ma formule déjà présente ?

Voici un moreau de ma macro :

For i = 0 To ListBox1.ListCount
If ListBox1.Selected(i) = True Then
With Worksheets("SELECTIONS").Range("a" & i + 1)
.Offset(1, 1).Value = TextBox2.Value
.Offset(1, 2).Value = TextBox3.Value
.Offset(1, 3).Value = TextBox4.Value
.Offset(1, 4).Value = TextBox5.Value
.Offset(1, 5).Value = TextBox6.Value
.Offset(1, 6).Value = TextBox7.Value
.Offset(1, 7).Value = TextBox8.Value
.Offset(1, 8).Value = TextBox9.Value
'etc...

End With
End If
Next i

Merci d'avance pour votre aide, meilleures salutations à tous

Michel
 
Dernière édition:

michelbra

XLDnaute Nouveau
Re : Rapatrier une formule dans le textbox d'un userform

Bonjour PierreJean.

Tout d'abord, merci beaucoup pour votre réponse, si rapide :)

En fait, chaque cellule ayant une formule calculant une date future va petit à petit être remplacée par une date fixe, entrée manuellement, lorsque la date calculée sera passée. Donc chaque cellule peut avoir une formule ou une date fixe. Il faut donc que, lorsque l'userform copie le contenu des textbox dans la feuille, cela n'écrase les formules que s'il y a une date dans le textbox. Si le textbox est vide, la formule doit rester dans la cellule de la feuille.

En l'occurence, en modifiant mes formules, j'ai maintenant le message d'erreur suivant : Erreur d'exécution 13 - incompatibilité de type.

Merci encore beaucoup pour votre aide

Michel
 

michelbra

XLDnaute Nouveau
Re : Rapatrier une formule dans le textbox d'un userform

Bonjour PierreJean,

J'ai mis un peu long à répondre, j'ai été obligé d'effacer et de modifier beaucoup de données dans le fichier pour qu'il n'y ait plus de confidentialité, qu'il soit utilisable par tout le monde, cela m'a pris quelques heures. Ensuite, je l'ai zippé, car l'original fait 23 Mo. Une fois fini, il fait encore un peu plus de 5 Mo. Le système refuse je crois un fichier de cette taille... Je vais quand-même essayer de l'envoyer, on verra si ça passe...
Sinon, y a-t-il une autre manière de l'envoyer, ou par mail ?

En tout cas, merci d'avance pour votre aide et je vous souhaite un très bon week-end.

Michel
 

michelbra

XLDnaute Nouveau
Re : Rapatrier une formule dans le textbox d'un userform

J'ai enfin trouvé :)
En fait, la solution est toute bête, il faut juste procéder en deux phases :

-Lors du chargement de mon TextBox, étant donné que la formule qui y apparaît est sous la forme 00:00:00, je suis la procédure suivante : Je charge la TextBox depuis ma cellule source, j'en contrôle le contenu, si le contenu est "00:00:00" je le vide ("")

TextBox11.Value = .Cells(i + 1, "k").Value
If TextBox11 = "00:00:00" Then
TextBox11 = ""
End If

-Lors du déchargement de mon TextBox, pour ne pas écraser ma formule par du vide, je teste à nouveau mon TextBox, de la manière suivante : Si mon TextBox n'est pas vide, je me place sur la cellule de destination et j'y copie le contenu du Textbox.
Donc, si mon TextBox est vide je ne fais rien, ce qui n'écrase pas ma formule.

If Not TextBox11.Value = "" Then
.Offset(1, 10).Value = TextBox11.Value
End If

Meilleures salutations à tous
 

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla