XL 2019 Remplir un fichier avec un USER

Yann71

XLDnaute Occasionnel
Bonjour la com. J'aimerai depuis un USER avec comboBox et textBox remplir certaine cellule d'une feuille. Les comboBox dans le cadre Médecin hôpital ont une liste de données mais pas les autres pour le moment. Celui que je souhaite utiliser est l'userform nommé USER. Le bouton MENU permet de voyager dans les feuilles. Autre petti soucis que j'ai remarqué, mon classeur met du temps à s'ouvrir, est-ce que cela provient de certaine ligne de code.
 

Pièces jointes

  • COMPTA_2020_TEST1 - Copie.xlsm
    567.2 KB · Affichages: 9

fanch55

XLDnaute Accro
Bonjour,
mon classeur met du temps à s'ouvrir, est-ce que cela provient de certaine ligne de code.
Chez moi aussi, mais il y a de nombreux lien non résolus ( pointants vers "compta frais Math.xlsb" ).
Ceci expliquant peut-être cela ...
J'ai réduit considérablement la durée de chargement en affichant toutes les feuilles en affichage normal et non en affichage avec mise en page .

Sinon, j'ai analysé l'userform et les feuilles concernées.
Il existe pas mal d'incohérence entre une Page et sa feuille .
Pourquoi autant de Liste de validation dans la feuille si la saisie doit se faire sur l'Userform ?
Je suppose qu'on doit charger la page de l'userform à partir des données de la feuille et modifier la feuille à partir de cette page ?
 

Yann71

XLDnaute Occasionnel
Bonjour,

Chez moi aussi, mais il y a de nombreux lien non résolus ( pointants vers "compta frais Math.xlsb" ).
Ceci expliquant peut-être cela ...
J'ai réduit considérablement la durée de chargement en affichant toutes les feuilles en affichage normal et non en affichage avec mise en page .

Sinon, j'ai analysé l'userform et les feuilles concernées.
Il existe pas mal d'incohérence entre une Page et sa feuille .
Pourquoi autant de Liste de validation dans la feuille si la saisie doit se faire sur l'Userform ?
Je suppose qu'on doit charger la page de l'userform à partir des données de la feuille et modifier la feuille à partir de cette page ?
Bonsoir fanch55. Si il y a autant de Liste de validation, c'est que le classeur n'est pas complet, j'ai supprimé énorméments de feuille dont je n'ai pas besoin. En fait j'ai repris un encien classeur est et voulu l'améliorer en y incorporant un USER pour remplir le classeur. J'ai omis de vider le surplus dans le gestionnaire de noms. Pour faire plus simple, avec ce même classeur, j'ai un USER comportant des onglets correspondant à chaque mois qui serviras à remplir des montant dans la collonne "C" tout en pouvant si le cas est demandé, de pouvoir modifier les saises des montants. Je vous joins un fichier avec les feuilles qui sont pour le moment utilisée. J'ai vidé le gestionnaire des noms, car dans le fichier joins il n'y a plus de liste déroulante ni de ComboBox. Je vous souhaite une bonne soirée.
 

Pièces jointes

  • COMPTA_2020_TEST.xlsm
    205.9 KB · Affichages: 6

fanch55

XLDnaute Accro
Bonsoir,
Vous trouverez ci-joint le classeur avec une ébauche de ce que vous demandez.
Vous n'avez pas choisi la voie la plus simple ni la plus rapide .
Je ne vois pas trop l'intérêt de refaire une feuille via un UserForm .
Dans votre Userform, j'ai renommé toutes les pages avec le nom des mois.
Cela permet de savoir quelle est la page qui fait quoi dans le code .
Uniquement pour la page "Janvier" ( car cela prend beaucoup de temps), j'ai essayé d'établir une règle de nommage pour les controls : le type,le mois,la catégorie +l'ordre.
Ainsi une textbox est nommée Tbx_Jan_CP2 , elle correspond au Salaire du Mois de Janvier,
une autre Tbx_Jan_ITV1 correspond à la valeur (V1) de l'impôt et taxe (IT) du mois de Janvier (Jan)
Il faudra reporter la normalisation sur les 11 autres pages de l'userform .
Les données sont chargées au lancement de l'userform ou au changement de Page, l'enregistrement se fait via le bouton MAJ .
Il n'y a aucun contrôle des champs (numérique ou autre).

Je vous souhaite bon courage
Nota: il existe des contrôles "parasites" sur les pages, surement des reliquats de copie .
 

Pièces jointes

  • Compta 2020 test1.xlsm
    222.9 KB · Affichages: 9

Yann71

XLDnaute Occasionnel
Bonsoir,
Vous trouverez ci-joint le classeur avec une ébauche de ce que vous demandez.
Vous n'avez pas choisi la voie la plus simple ni la plus rapide .
Je ne vois pas trop l'intérêt de refaire une feuille via un UserForm .
Dans votre Userform, j'ai renommé toutes les pages avec le nom des mois.
Cela permet de savoir quelle est la page qui fait quoi dans le code .
Uniquement pour la page "Janvier" ( car cela prend beaucoup de temps), j'ai essayé d'établir une règle de nommage pour les controls : le type,le mois,la catégorie +l'ordre.
Ainsi une textbox est nommée Tbx_Jan_CP2 , elle correspond au Salaire du Mois de Janvier,
une autre Tbx_Jan_ITV1 correspond à la valeur (V1) de l'impôt et taxe (IT) du mois de Janvier (Jan)
Il faudra reporter la normalisation sur les 11 autres pages de l'userform .
Les données sont chargées au lancement de l'userform ou au changement de Page, l'enregistrement se fait via le bouton MAJ .
Il n'y a aucun contrôle des champs (numérique ou autre).

Je vous souhaite bon courage
Nota: il existe des contrôles "parasites" sur les pages, surement des reliquats de copie .
Bonsoir, je vous remercie pour votre intervention. Je n'ai pas tout saisie la théorie que vosu m'avez fourni, mais je vais essayer de comprendre votre code et la manière de votre réflection. Je l'admet refaire une feuille depuis un UserForm n'est pas intéressant, mais cela me permet de pouvoir comprendre et de pouvoir aboutir à un autre projet dont je pourrai avoir besoin dans un future proche.
Merci encore de votre aide, passez une bonne soirée.
 

Yann71

XLDnaute Occasionnel
Bonjour ChTi160 et fanch55.
ChTi160 comment vas-tu, tu as toujours de bonne idée, mais là dsl mais je suis largué. Je ne pense pas pouvoir arriver à élaborer un tel UserForme. Trop d'inconnu heureusment que des tutos existes ;O)
 

ChTi160

XLDnaute Barbatruc
Re Yann rien de compliquer
un ComboBox où l'on incrémenté les mois.
Puis travail à faire sur les textBoxon entre dans le Tag les coordonnées ligne et colonne de la Cellule Source Exemple :du Tbx_Solde --- 3-2
Pour ligne 3 Colonne 2 quelque soit la feuille Source.
Du travail au départ mais bon moins que toutes les feuilles du multipages
un extrait du code du ComboBox que l'on peut obtimiser !Lol
VB:
Private Sub CmbB_Mois_Change()
With UserForm1
 With .MltPge_Gestion
  With .Pages(1)
   With .CmbB_Mois
   If .ListIndex = 0 Then Exit Sub
      StrMois = .List(.ListIndex, 0)
Set Ws_Source = ThisWorkbook.Worksheets(StrMois)
   End With
    With .Frm_1
      With .Tbx_Solde
        T = Split(.Tag, "-")
      Lgn = CInt(T(0)): Col = CInt(T(1))
           .Text = Format(Ws_Source.Cells(Lgn, Col).Value, "### ##0.00")
      End With
    End With 'Frm_1
    
    With .Frm_2
      With .Tbx_CP2
        T = Split(.Tag, "-")
      Lgn = CInt(T(0)): Col = CInt(T(1))
           .Text = Format(Ws_Source.Cells(Lgn, Col).Value, "### ##0.00")
      End With
      With .Tbx_CP3
        T = Split(.Tag, "-")
      Lgn = CInt(T(0)): Col = CInt(T(1))
           .Text = Format(Ws_Source.Cells(Lgn, Col).Value, "### ##0.00")
      End With
      With .Tbx_CP4
        T = Split(.Tag, "-")
      Lgn = CInt(T(0)): Col = CInt(T(1))
           .Text = Format(Ws_Source.Cells(Lgn, Col).Value, "### ##0.00")
      End With
      With .Tbx_CP5
        T = Split(.Tag, "-")
      Lgn = CInt(T(0)): Col = CInt(T(1))
           .Text = Format(Ws_Source.Cells(Lgn, Col).Value, "### ##0.00")
      End With
    End With 'Frm_2
Jean marie
 

ChTi160

XLDnaute Barbatruc
Re
un premier raccourcit
VB:
'Les variables sont définies en tête de Module
With .Frm_2
    For i = 2 To 5 4   'on Boucle
      Set Ctl_TxtB = .Controls("Tbx_CP" & i) 'On définit le Control
      With Ctl_TxtB 4avec ce control
        T = Split(.Tag, "-")'On récupére le contenu du .Tag dans un Tableau en le décomposant avec la fonction Split
      Lgn = CInt(T(0)): Col = CInt(T(1)) 'On définit les deux variables en fonction des Données du Tableau
           .Text = Format(Ws_Source.Cells(Lgn, Col).Value, "### ##0.00") 'On colle la valeur de la Cellule Source en la formatant
      End With
     Next i
    End With 'Frm_2
jean marie
 

Yann71

XLDnaute Occasionnel
Re
un premier raccourcit
VB:
'Les variables sont définies en tête de Module
With .Frm_2
    For i = 2 To 5 4   'on Boucle
      Set Ctl_TxtB = .Controls("Tbx_CP" & i) 'On définit le Control
      With Ctl_TxtB 4avec ce control
        T = Split(.Tag, "-")'On récupére le contenu du .Tag dans un Tableau en le décomposant avec la fonction Split
      Lgn = CInt(T(0)): Col = CInt(T(1)) 'On définit les deux variables en fonction des Données du Tableau
           .Text = Format(Ws_Source.Cells(Lgn, Col).Value, "### ##0.00") 'On colle la valeur de la Cellule Source en la formatant
      End With
     Next i
    End With 'Frm_2
jean marie
Merci Jean-Marie, tu dis rien de compliqué cela vaut pour toi mais en ce qui me concerne cela va être bien compliqué. Mais comme je l'ai exprimé dans mon denier mess je vais essayer de comprendre ton code ainsi que la présentation et je verrai si ma persévérence payera.
 
Haut Bas