Microsoft 365 Userform et TextBox

  • Initiateur de la discussion Initiateur de la discussion Yann71
  • 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 !

Yann71

XLDnaute Occasionnel
Bonjour la comm.
Après quelque recherche je n'arrive à trouver la réponse à mon petit soucis.
Je cherche à afficher le résultat d'un tableau dans mes TextBox.
 

Pièces jointes

Solution
Re,
Le "Application.EnableEvents = False" semble inefficace sur un userform d'où la suppression des unload me dans l'userform.
Un essai en PJ avec une variable public "Refus", quand il vaut 1 le unload me est invalidé par :
VB:
If Refus = 0 Then Unload Me
et la macro de remplissage :
Code:
Public Refus%
Sub Rectangle23_Cliquer()
Dim Npage, i
Refus = 1
With UserComparaison
    For Npage = 0 To 13
        For i = 1 To 12
            .MultiPage1.Pages(Npage).Controls("TextBox" & i + Npage * 12).Value = Cells(i + 3, Npage + 3)
        Next i
    Next Npage
End With
Refus = 0
UserComparaison.Show
End Sub
Bonjour Yann,
Un essai en PJ avec :
VB:
Sub Rectangle23_Cliquer()
Dim Npage, i
Application.EnableEvents = False
With UserComparaison
    For Npage = 0 To 13
        For i = 1 To 12
            .MultiPage1.Pages(Npage).Controls("TextBox" & i + Npage * 12).Value = Cells(i + 3, Npage + 3)
        Next i
    Next Npage
End With
Application.EnableEvents = True
UserComparaison.Show
End Sub
Par contre j'ai supprimé tous les "unload me" du userform, car quand on écrit dans un textbox on sort de l'userform.
Que vouliez vous faire avec ces lignes ?
 

Pièces jointes

Re,
Le "Application.EnableEvents = False" semble inefficace sur un userform d'où la suppression des unload me dans l'userform.
Un essai en PJ avec une variable public "Refus", quand il vaut 1 le unload me est invalidé par :
VB:
If Refus = 0 Then Unload Me
et la macro de remplissage :
Code:
Public Refus%
Sub Rectangle23_Cliquer()
Dim Npage, i
Refus = 1
With UserComparaison
    For Npage = 0 To 13
        For i = 1 To 12
            .MultiPage1.Pages(Npage).Controls("TextBox" & i + Npage * 12).Value = Cells(i + 3, Npage + 3)
        Next i
    Next Npage
End With
Refus = 0
UserComparaison.Show
End Sub
 

Pièces jointes

Bonjour Yann,
Un essai en PJ avec :
VB:
Sub Rectangle23_Cliquer()
Dim Npage, i
Application.EnableEvents = False
With UserComparaison
    For Npage = 0 To 13
        For i = 1 To 12
            .MultiPage1.Pages(Npage).Controls("TextBox" & i + Npage * 12).Value = Cells(i + 3, Npage + 3)
        Next i
    Next Npage
End With
Application.EnableEvents = True
UserComparaison.Show
End Sub
Par contre j'ai supprimé tous les "unload me" du userform, car quand on écrit dans un textbox on sort de l'userform.
Que vouliez vous faire avec ces lignes ?
Je te remercie pour ton aide, c'est exactement ce que je souhaitai. Une question, tu peux m'expliquer pourquoi mon fichier ne fonctionnais pas. J'avais ce Userform dans un autre classeur, cela fonctionnai en partie. Userform affichait le résultat des 3 premières colonne, mais si je rajoutait au code de la 4ème colonne (OPs), mon Userform ne s'ouvrait plus. Message d'erreur

Erreur d'exécusion '-2147418105(80010007)
Erreur automation
L'appelé(serveur pas application serveur) n'est pas disponible et à disparu;aucune connexion n'est valide. L'appel a peut-être été exécuté.
 
Bonjour Yann,
Un essai en PJ avec :
VB:
Sub Rectangle23_Cliquer()
Dim Npage, i
Application.EnableEvents = False
With UserComparaison
    For Npage = 0 To 13
        For i = 1 To 12
            .MultiPage1.Pages(Npage).Controls("TextBox" & i + Npage * 12).Value = Cells(i + 3, Npage + 3)
        Next i
    Next Npage
End With
Application.EnableEvents = True
UserComparaison.Show
End Sub
Par contre j'ai supprimé tous les "unload me" du userform, car quand on écrit dans un textbox on sort de l'userform.
Que vouliez vous faire avec ces lignes ?
Je répond à ta question. J'avais recopié un code que j'avais sur un ancien fichier.
 
J'avais ce Userform dans un autre classeur, cela fonctionnai en partie.
Que puis je vous dire. Il faudrait regarder le code en détail. En plus un code marche ou pas, mais en partie cela veut dire qu'il ne marchait pas.
Par contre si vous avez des unload attaché aux textbox alors l'userform ne peut pas se remplir puisqu'il est arrêté en cours de route.
Et les "Application.EnableEvents = False" n'ont pas d'impacts sur ces événements.
C'est pour ça que je suis passé par une variable public pour interdire ces unload.
 
Bonsoir à tous
perso au regard du userform je suppute qu'il n'est pas fini et qui il y aura peut être la possibilité d'inscrire ou modifier les datas dans les lignes
de ce fait vos méthodes impliquent une reinit pour les éventuels calculs par exemple pour les totals

donc la solution la plus appropriée serait l'inscription dans les textbox au moment ou on change de page dans le multipage

rien de plus simple
pour le coup je rejoins aussi @fanfan38 avec le TS
VB:
Private Sub MultiPage1_Change()
   dim i&
   For i = 1 To 12
        Me.Controls("TextBox" & i + (12 * (MultiPage1.Value))) = [T_data].Cells(i, MultiPage1.Value + 2)
    Next
End Sub
Quand on sélectionne une page elle est a jour

Patrick
 

Pièces jointes

Du coup, les TextBox sont-elles la chose la mieux adaptée ?
Salut,
voici une possibilité avec une combobox pour choisir la catégorie (au lieu d'un multipage) et une listeview à deux colonnes :
1 colonne mois et 1 colonne avec la valeur correspondante dans la catégorie choisie.
Pour l'Edition , on double clic sur la ligne du mois que l'on veut modifier, une textbox apparaît , on change la valeur qui se met à jour dans la listview.
Un bouton sauvegarder permet de mettre à jour le tableau de la feuille excel.
Yann71LV.gif


A noter que l'on peut utiliser une ListBox à la place de la Listview (seulement utilisée ici pour avoir le quadrillage et l'entête de colonne facilement modifiable).

Nullosse
 
Dernière édition:
Salut,
voici une possibilité avec une combobox pour choisir la catégorie (au lieu d'un multipage) et une listeview à deux colonnes :
1 colonne mois et 1 colonne avec la valeur correspondante dans la catégorie choisie.
Pour l'Edition , on double clic sur la ligne du mois que l'on veut modifier, une textbox apparaît , on change la valeur qui se met à jour dans la listview.
Un bouton sauvegarder permet de mettre à jour le tableau de la feuille excel.
Regarde la pièce jointe 1224101

A noter que l'on peut utiliser une ListBox à la place de la Listview (seulement utilisée ici pour avoir le quadrillage et l'entête de colonne facilement modifiable).

Nullosse
Bonjour Nullosse quoique ton pseudo n'a pas l'air d'être approprie à tes connaissance.
Je te remercie, mais mon tableau est liés à d'autres feuilles de mon classeur que je n'ai pas joins à mon fichier. Je n'ai donc pas l'utilité
de ce que tu proposes. J'avoue toutefois que c'est intéressant, mais je serai incapable de réaliser ton projet.

Yann
 
Je n'ai pas bien compris le but de ce fil de discussion.
Est-ce, comme le dit Sylvanu, un exercice juste pour apprendre à utiliser des TextBox, ou est-ce pour faire quelque chose de réellement fonctionnel ?

Si c'est pour réellement utiliser ce UserForm, la solution de nullosse me semble parfaite. N'est-il pas ?
 
- 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

Réponses
4
Affichages
84
Réponses
2
Affichages
90
Réponses
118
Affichages
2 K
Réponses
2
Affichages
117
Réponses
1
Affichages
252
Retour