Problème de textbox à l'intérieur d'un formulaire

  • Initiateur de la discussion Initiateur de la discussion a26
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

a26

XLDnaute Occasionnel
Bonsoir,
A partir d'un formulaire de Jacques Boisgontier nommé annuaire j'ai essayé de construire un formulaire adapté à mes besoins. Malheureusement, dès qu'il y a des formules je bute sur la programmation des textbox et celui-ci m'annule la formule.
Pouvez-vous me venir en aide ? Merci.
Cordialement,
André
 

Pièces jointes

Re : Problème de textbox à l'intérieur d'un formulaire

Bonjour

Si vous voulez que les colonnes E et F soient calculées par formule, dans l'USF supprimez la copie des textbox (Txt5 et Txt6) en réduisant la boucle (par exemple)

A+
 
Re : Problème de textbox à l'intérieur d'un formulaire

Comment procéder ? J'avoue que je ne saisis pas très bien la procédure.
Merci quand même, mais si tu pouvais me diriger vers le code précis à modifier cela m'arrangerait.
 
Re : Problème de textbox à l'intérieur d'un formulaire

Re,

le seul code écrivant les données de l'USF vers la feuille se trouve dans Private Sub b_validation_Click(), précédé du commentaire suivant : '---- transfert base :

Code:
  For i = 1 To ncol
    f.Cells(ligne, i) = Me("txt" & i)
  Next i

i évolue de 1 à 6 (ncol) puisqu'on veut s'arrêter à 4 (pour ne pas écrire en colonne E(5) et F(6) les valeurs des Txt5 et Txt6) on limite la valeur max de i à 4 donc ncol - 2

On pourrait modifier directement la valeur de ncol, mais à voir les répercussions sur le reste !

Bonne suite
 
Re : Problème de textbox à l'intérieur d'un formulaire

Bonsoir,

Code:
Private Sub Txt2_Change()
   tot
End Sub
Private Sub Txt3_Change()
  tot
End Sub
Private Sub Txt4_Change()
  tot
End Sub
Sub tot()
  Me!Txt5 = Val(Me!Txt2) + Val(Me!Txt3) + Val(Me!Txt4)
  Me!Txt6 = Val(Me!Txt2) * [adultes] + Val(Me!Txt3) * [enfants] + Val(Me!Txt4) * [emportés]
End Sub

JB
 

Pièces jointes

Re : Problème de textbox à l'intérieur d'un formulaire

Re,

l'étude pas à pas du déroulement du code et de la valeur des variables permet de voir à quel moment il y a un souci

La mise à jour des colonnes de la feuille BD, s'arrête bien en colonne D, seulement les valeurs des colonnes B, C et D sont rentrées sous forme de texte les formules en colonnes E et F ne s'exécutent pas .

Modifier f.Cells(ligne, i) = Me("txt" & i) en f.Cells(ligne, i) = Val(Me("txt" & i))


Par ailleurs à quoi sert la Sub format(), appelée en fin de Private Sub b_validation_Click() ?

Appliquer un format numérique sur la plage de cellule B8:E209 de toutes les feuilles du classeur ne me parait pas opportun! et le code .Value = .Value qui initialise chaque cellule de cette plage par sa propre valeur, fait disparaitre les formules s'il y en avait.

A mon avis, supprimer l'appel à cette sub ( et la sub elle même) , appliquer le format et les formules manuellement sur la feuille BD


A +
 
Re : Problème de textbox à l'intérieur d'un formulaire

Bonjour,
Excusez moi de n'avoir pas répondu hier soir car j'ai du m'absenter. Merci beaucoup à JB pour ses fichiers qui me permettent d'apprendre (lentement) la programmation VBA ainsi que la correction du code de mon fichier et à toi Paf pour tes explications très claires. Votre contribution me permet d'obtenir le résultat que j'attendais.
Serait-il possible de vous soumettre encore deux problèmes ?
Est-il possible d'ajouter à ma feuille liste un nom nouveau que je saisirai avec le formulaire et qui s'ajoute ici en feuille BD, mais que je n'arrive pas à ajouter à ma liste à la feuille liste. J'ai ajouté la macro listenoms, mais elle n'est pas fonctionnelle.
Si c'est pas trop abuser de votre temps, quand je sélectionne un nom avec le formulaire peut on aussi se positionner sur ce nom.
Cordialement,
a26
 

Pièces jointes

Re : Problème de textbox à l'intérieur d'un formulaire

Bonsoir à tous,
Merci à JB, pour son dernier envoi. Le positionnement sur le nom se fait bien.
Pour ma 2e demande je ne me suis pas bien exprimé.
Je modifie le message précédent pour qu'il soit plus compréhensible.
J'ai une base de noms que je laisse d'une année sur l'autre à la feuille BD.
Si je rajoute un nom à la feuille inscriptions j'aimerai qu'il se rajoute à ma liste. Si j'en supprime dans la feuille inscription, je ne veux pas les supprimer dans ma feuille BD donc les formules ne sont pas la solution. Autant qu'il est possible une macro serait la bienvenue car je n'arrive pas à un résultat avec celle que j'ai saisi.
Cordialement,
a26
 

Pièces jointes

Dernière édition:
Re : Problème de textbox à l'intérieur d'un formulaire

Bonjour a26, le Forum,

Pour suivre les conseils de JM (que je salue au passage, ainsi que JB et Paf), je viens reprendre la suite sur ce fil initial.

Je rebondis sur ta réponse:

Merci papou-net, mais ta macro ne fonctionne pas. Lors d'un ajout de noms celui-ci n'est pas ajouté à ma liste dans la feuille BD.
Il me semble que l'ajout se produit bien sur la feuille BD. Pour preuve, la copie de ton fichier ci-jointe. Je t'assure que je n'ai pas ajouté manuellement Zucchero sur BD, c'est bien la procédure du bouton Ajout qui l'a fait. Ou alors, je n'ai pas saisi l'intégralité de ta question.

Je te laisse le soin de tester par toi-même.

Cordialement.
 

Pièces jointes

Dernière édition:
Re : Problème de textbox à l'intérieur d'un formulaire

RE:

En approfondissant l'étude, je me suis rendu compte que le nouveau nom n'apparaissait pas dans la ListBox "choixnom". Peut-être est-ce ce que tu voulais observer?

En tout cas, voici la macro modifiée qui met à jour cette liste de manière instantanée:

Code:
Private Sub B_ajout_Click()
Dim nNom
  ligne = f.[A65000].End(xlUp).Row + 1
  Set nNom = Feuil37.Columns(1).Find(Me("txt1"), LookIn:=xlValues, lookat:=xlWhole)
  If nNom Is Nothing Then
    Feuil2.Cells(ligne, 1) = Me("txt1")
    Feuil37.Cells(ligne, 1) = Me("txt1")
  End If
 listenoms
  nettoie
  UserForm_Initialize
End Sub
Bonne journée.

Cordialement.
 

Pièces jointes

Re : Problème de textbox à l'intérieur d'un formulaire

Ta modification me rapproche sensiblement de ce que je voulais obtenir. L'ajout du nom se fait bien. Serait-il possible quand on clique sur ajout les textbox n'affichent pas le premier nom, mais soient libres en écriture pour éviter les confusions ? Quand je clique sur ajout j'ai en apparence Aragon Louis, mon dernier souhait serait de n'avoir aucune écriture en affichage avant ma saisie.
Merci et bonne journée,
a26
 
Re : Problème de textbox à l'intérieur d'un formulaire

Voici comment modifier le code:

Code:
Private Sub B_ajout_Click()
Dim nNom, Ctl
  ligne = f.[A65000].End(xlUp).Row + 1
  Set nNom = Feuil37.Columns(1).Find(Me("txt1"), LookIn:=xlValues, lookat:=xlWhole)
  If nNom Is Nothing Then
    Feuil2.Cells(ligne, 1) = Me("txt1")
    Feuil37.Cells(ligne, 1) = Me("txt1")
  End If
 listenoms
  UserForm_Initialize
  nettoie
End Sub
Il suffit de déplacer la procédure "nettoie" en dernier dans la macro.

Cordialement.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

T
Réponses
2
Affichages
1 K
Tava94
T
H
Réponses
21
Affichages
2 K
H
C
Réponses
3
Affichages
851
C
T
Réponses
1
Affichages
1 K
Retour