XL 2013 Problème dans Formulaire VBA qui efface formules dans mon classeur Excel

Ismagapi

XLDnaute Junior
Bonjour et merci de votre aide par avance,
J'ai créé un formulaire pour rechercher, modifier ou créer dans une base de données. J'arrive à rapatrier mes données mais lorsque je créé ou lorsque je modifie grace à un bouton de commande, la sauvegarde se fait dans ma base de données mais efface la formule de ma cellule. Résultat les valeurs remontées par la suite par mon formulaire sont erronées car la formule =SI(CL259>0;NBVAL(CP259;CZ259;DJ259;DT259;ED259;EN259);"0") se transforme en chiffre 1,2,3,4,5 et 6 en valeurs numériques.
Comment peut on faire pour empêcher l'écriture de ma textBox qui rapatrie la donnée de la cellule dans ma base de données ?
Ci joint mon code entier (je sais c'est un peu le bordel mais je débute ...)
 
Dernière édition:

Ismagapi

XLDnaute Junior
On affiche avec le Combobox le Contact
Le Bouton Modifier est sur la droite lorsque l'on affiche un contact .
Le bouton Création s'efface si on est en mode modification.
Toutes les données ligne par ligne de mon tableau Excel "Base de données2" s'affiche avec un combobox ou un TextBox.
Ma TextBox46 (Label 'Nombre d'enfant(s) déjà en Accueil') dans l'onglet "AGREMENT / NOMBRE DE PLACE" doit afficher un chiffre d'un calcul qui provient de ma base de données Excel (=SI(CL259>0;NBVAL(CP259;CZ259;DJ259;DT259;ED259;EN259);"0").
Idem pour TextBox47 (Label 'Places Libres') avec la formule (= CM?-CN?) cela fonctionne sur ma feuille Excel.
Le problème c'est lorsque je modifie n'importe quelle autre données liées à mon contact et que je sauvegarde mes modifications, la formule en colonne CM et CN est effacée dans mon tableau excel et cela m'affiche juste le chiffre précédemment récupéré.
Je voudrais savoir si je pouvais afficher la textbox46 et la textbox47 à l'ouverture de mon formulaire mais exclure de la modification et de la creation d'un contact la TextBox46 et la TextBox47.
Ou autre solution d'adapter les formules =SI(CL259>0;NBVAL(CP259;CZ259;DJ259;DT259;ED259;EN259);"0"
= CM?-CN?
En VBA et en utilisant le nom et le contenu des textbox à la place des cellules.

Merci de pouvoir me renseigner.
 

Dranreb

XLDnaute Barbatruc
Avez vous corrigé en conséquence les instructions qui analysent le contenu du Tag ?
(En prendre la valeur absolue en entrée, et tester si c'est positif en sortie)
Vérifiez si le type de donnée utilisé pour en récupérer la valeur supporte les nombre négatifs. Byte ne les supporte pas, Integer, si.
 

Ismagapi

XLDnaute Junior
Je ne sais pas le faire, je débute en VBA. J'ai juste placé un "-" dans le Tag de ma Textbox sans rien faire d'autre.
Je ne devrais pas plutot ecrire un bout de code dans la Private Sub CommandButton2_Click() ?
For Each CTRL In Me.Controls
If CTRL.Tag <> "" Then WS.Cells(L, CByte(CTRL.Tag)).Value = CTRL.Value
En trouvant comment exclure la "TextBox46" de la modification ?

Merci de vous pencher sur mon problème, c'est vraiment sympa de me rendre ce service ...
 

Ismagapi

XLDnaute Junior
Et un truc du genre If CTRL.Tag<>"91" = 'on ne renvoie pas la valeur dans la feuille 'Base de données2' mais la par contre je sèche sur ce que je dois mettre après le signe= ???

Pour votre solution je devrais mettre quoi à la suite de then pour éviter de renvoyer la valeur ?
 

Ismagapi

XLDnaute Junior
Autre solution si je dois me pencher sur la traduction en VBA de la formule
=SI(CL??>0;NBVAL(CP??;CZ??;DJ??;DT??;ED??;EN??);"0") En sachant que je peux remplacer CP, CZ, DJ, DT, ED et EN par des noms de TextBox
Afin que cela soit VBA qui me calcule la formule plutôt que ma feuille excel.
 

Discussions similaires

Réponses
17
Affichages
627

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16