1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

XL 2010 Formulaire de modification

Discussion dans 'Forum Excel' démarrée par cathodique, 28 Novembre 2018.

  1. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Bonjour,

    Je bute pour mettre au point un formulaire de modification (UsfFiche).
    L'idée est la suivante:
    1- à l'ouverture du formulaire la combobox1 contiendra le n° des écritures comptables
    2- la sélection d'un n° peuplera la Listbox1 (un bug survient si on clique sur toupie de combobox2 ou 3 avant le choix n° dans combobox1)
    3- pour faciliter les modifications les combobox 2 et 3 seront alimentées respectivement à partir des feuilles "CodeComptes" et "Initiateurs".
    4- au choix combobox2, combobox2 prend le n° de compte, textbox3 le libellé et textbox9 le montant du prévisionnel/budget.
    5- au clic sur le bouton Modifier Ligne, mettra à jour la ligne correspondante dans la listBox
    Car je voudrais faire au préalable une vérification du total des montants des textboxs TxtCtrlMontant et Textbox7, avant d’effectuer les modifications dans la feuille "Comptes".

    Cela fait un bon moment que je suis dessus sans parvenir à vraiment résoudre le problème.

    En vous remerciant par avance.

    EDIT: MERCI DE CONSULTER CE POST
     
    Dernière édition: 12 Décembre 2018 à 19:45
  2. Chargement...

    Discussions similaires - Formulaire modification Forum Date
    Formulaire de modification [RESOLU] Forum Excel 18 Novembre 2018
    XL 2013 Formulaire gestion doc. pour modification Forum Excel 29 Novembre 2016
    probléme au niv d formulaire de modification Forum Excel 31 Août 2016
    XL 2007 [VBA] Formulaire de modification Forum Excel 27 Juin 2016
    XL 2007 Modification d'un intitulé de formulaire Forum Excel 13 Juin 2016

  3. BOISGONTIER

    BOISGONTIER XLDnaute Barbatruc

    Inscrit depuis le :
    28 Septembre 2007
    Messages :
    7054
    "J'aime" reçus :
    471
    Habite à:
    Montigny
    Page d'accueil :
    Utilise:
    Excel 2003 (PC)
    Bonsoir,

    Sur Excel 2019 /Windows 10, on a une erreur de compilation

    Option Explicit
    'positionnement userform à côté cellule active
    Private Declare Function GetDC& Lib "user32.dll" (ByVal hWnd&)

    Private Declare Function FindWindow& Lib "User32" Alias "FindWindowA" (ByVal lpClassName$, ByVal lpWindowName$)


    Private Declare Function GetDeviceCaps& Lib "gdi32" (ByVal hDC&, ByVal nIndex&)



    Boisgontier
     

    Pièces jointes:

    Dernière édition: 28 Novembre 2018
  4. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Bonsoir Boisgontier,:)

    Merci pour ton retour, mais je t'avoue que je n'ai rien compris à tes lignes de codes et encore moins au message (image).

    Je suis sur windows 7 64 bits, Excel 2010 32 bits.

    Encore merci d'avoir consulté mon post.

    Bonne soirée.;)
     
  5. jpb388

    jpb388 XLDnaute Accro

    Inscrit depuis le :
    2 Mars 2010
    Messages :
    1516
    "J'aime" reçus :
    34
    Sexe :
    Masculin
    Habite à:
    TREGUNC (29S)
    Utilise:
    Excel 2010 (PC)
    Bonjour à tous
    Même problème que Boisgontier j'ai donc modifié tes api
    essaye ceci

    Private Sub ComboBox2_Change()
    If Me.ComboBox2.ListIndex = -1 Then Exit Sub
    Me.TextBox3.Value = ComboBox2.List(Me.ComboBox2.ListIndex, 1)
    Me.TextBox9.Value = ComboBox2.List(Me.ComboBox2.ListIndex, 2)
    End Sub

    bonne soirée
     

    Pièces jointes:

    Dernière édition: 29 Novembre 2018
  6. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Bonjour, Boisgontier:), jpb388:),

    @BOISGONTIER : Le calendrier n'étant pas de moi, je n'avais pas compris que tes lignes de code concernées ce dernier. Merci.

    @jpb388 : Merci beaucoup pour ton aide. Mais certains problèmes persistent.

    Étant donné que le calendrier autonome pose problème, je l’ai supprimé.

    Problème1 : après un premier choix en combobox1, les items s’affichent en listbox1 et la textbox ‘’TxtCtrlMontant’’ affiche le montant total. Cependant, au clic sur une ligne ce montant devient nul (0,00). Je n’ai pas compris pourquoi.

    Problème2 : suite à la première manipulation, si on fait un autre choix en combobox1 et qu’on clique sur une ligne alors le code plante (voir images).
    er1.JPG

    er2.JPG
    Merci pour votre aide. Bonne journée.
     

    Pièces jointes:

  7. ChTi160

    ChTi160 XLDnaute Barbatruc

    Inscrit depuis le :
    20 Février 2005
    Messages :
    5232
    "J'aime" reçus :
    147
    Travail/Loisirs :
    Pas grand Chose , faudrait pas que je me fatigue
    Habite à:
    Loin
    Utilise:
    Excel 2010 (PC)
    Bonjour Cath
    Bonjour le Fil,le Forum
    voilà ou j'en été hier soir , je n'ai pas eu de problème avec les API (2010)
    Pas encore tout compris pour la répartition des éléments ,mais avec des explications ça devrait avancer.
    Teste et dis nous !
    je n'ai travaillé qu'a la gestion des données vers le Userform (pas de modification , suppression etc) à venir Lol
    jean marie
     

    Pièces jointes:

  8. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Bonjour,

    Merci beaucoup Jean-Marie pour tes efforts.;)

    Je n’ai eu aucun bogue avec ton fichier, merci. Mais ce n’est pas mon souhait (total Ecritures=dépenses+recettes, donc le résultat est faux).

    Voilà, le remplissage de la bd (feuille compte) s’effectue via une userform. Le process était le suivant (aidé par Boisgontier) :

    Une facture peut comporter plusieurs lignes. Le total de la facture est saisi dans une textboxA, ensuite après avoir renseigné les combobox et textboxs, au clic sur un bouton on alimente une listbox. La somme des montants de la listbox est comparée au total de la facture (textboxA), s’ils sont égaux, un bouton est activé pour permettre le transfert vers la bd. / ! \ il y a 2 colonnes pour les montants, une pour dépenses (col 6) et une pour recettes (col 7), le type d’opérations est en col 10 et le total de la facture en col 9.

    Concernant ce formulaire de modification pour lequel je sollicite votre aide, je voudrais faire à peu près la même chose.

    1- Choisir un n° de facture (combobox1 contiendra les n° de facture sans doublon)

    2- Après avoir effectuer un choix dans la combobox1, la listbox affichera les lignes de la facture concernée, la textbox TxtCtrlMontant affichera le total des lignes de la listbox (dépenses col6 ou recettes col7).

    3- Au clic sur une ligne, les données seront transmises aux différents contrôles (combo et textbox) où s’effectueront les modifications.
    Nb : les combobox2 et 3 contiendront la liste des données fonction du type de l’opération (dépenses ou recettes), respectivement à partir des feuilles CodeComptes et Initiateurs .

    4- Au clic sur le bouton Modifier Ligne, les données de la ligne concernée de la listbox seront modifiées.

    5- Si le montant calculé de la textbox TxtCtrlMontant est égal total de la facture col9 figurant dans textbox7. Alors le bouton Valider les modifications sera actif pour modifier les lignes de la listbox dans la bd (feuille comptes).

    En vous remerciant, j’espère avoir mieux expliqué mon problème.

    Bonne journée.

    edit @ChTi160 : J'essaie de comprendre ton code, dans initialize si j'ai bien compris les lignes ci-dessous, effectuent un tri des données. Pour info, ceci n'est pas nécessaire car dans le fichier original, un tri est effectué à chaque ajout de données.
    Code (Visual Basic):
    With ShInit
          DerLgn = .Cells(.Rows.Count, 1).End(xlUp).Row
          DerCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
          With .Range(.Cells(1, 1), .Cells(DerLgn, DerCol))
             .Sort .Cells(1, 2), xlAscending, , , , , , xlYes
             TabInit = .Value
          End With
       End With

       With ShBd
          DerLgn = .Cells(.Rows.Count, 1).End(xlUp).Row
          DerCol = .Cells(5, .Columns.Count).End(xlToLeft).Column
          With .Range(.Cells(5, 1), .Cells(DerLgn, DerCol))
             .Sort .Cells(2, 1), xlAscending, .Cells(2, 2), , xlAscending, , , xlYes
             TabGeneral = .Value
          End With
       End With
     
    Dernière édition: 29 Novembre 2018
  9. ChTi160

    ChTi160 XLDnaute Barbatruc

    Inscrit depuis le :
    20 Février 2005
    Messages :
    5232
    "J'aime" reçus :
    147
    Travail/Loisirs :
    Pas grand Chose , faudrait pas que je me fatigue
    Habite à:
    Loin
    Utilise:
    Excel 2010 (PC)
    Bonjour Cath
    Merci de ces precisions , je vais y regarder.
    Pour ce qui est du tri, si le tri se fait sur les bonnes colonnes cela ne gene pas, sinon tu mets un apostrophe devant les lignes qui commencent par ”.Sort ”
    Jean marie
     
  10. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Rebonjour Chti160:),

    Merci de t’intéresser à mon problème. Le tri s'effectue sur la 2ème colonne pour les 2 feuilles.
    Je te l'ai signalé juste pour alléger le code.
    Encore merci.;)

    edit: Merci d'Ajouter ce code afin que l'affichage du formulaire soit identique au fichier original. c-à-d affichage plein écran pour visionner toutes les colonnes de la Listbox.
    Code (Visual Basic):
    Private Sub UserForm_Activate()
       Dim ctl As Control
       Dim ratiow As String
       Dim ratioh As String
       Set UserActif = Me
       ratiow = Application.Width / Me.Width
       ratioh = Application.Height / Me.Height
       Me.Left = 0
       Me.Top = 0
       Me.Width = Application.Width
       Me.Height = Application.Height
       For Each ctl In Me.Controls
          ctl.Left = ctl.Left * ratiow
          ctl.Top = ctl.Top * ratioh
          ctl.Width = ctl.Width * ratiow
          ctl.Height = ctl.Height * ratioh
          ctl.Font.Size = ctl.Font.Size * ratioh
       Next
    End Sub
     
     
    Dernière édition: 29 Novembre 2018
  11. BOISGONTIER

    BOISGONTIER XLDnaute Barbatruc

    Inscrit depuis le :
    28 Septembre 2007
    Messages :
    7054
    "J'aime" reçus :
    471
    Habite à:
    Montigny
    Page d'accueil :
    Utilise:
    Excel 2003 (PC)
    Bonsoir,

    Suite à un message privé de Cathodique, voici l'ajout de nos de ligne dans le ListBox pour la modif des fiches. Ces nos peuvent être cachés

    Boisgontier
     

    Pièces jointes:

  12. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Bonsoir Boisgontier:),

    Très gentil de ta part. Merci beaucoup.

    Le code plante toujours au changement de la combobox1 puis au clic dans la listbox.

    Je vais revoir mon approche du problème.

    Encore merci. Bon week-end.;)
     
  13. BOISGONTIER

    BOISGONTIER XLDnaute Barbatruc

    Inscrit depuis le :
    28 Septembre 2007
    Messages :
    7054
    "J'aime" reçus :
    471
    Habite à:
    Montigny
    Page d'accueil :
    Utilise:
    Excel 2003 (PC)
    Je ne comprends pas. Met un stop dans combox1_click puis F8

    (testé sous Excel 2007,2010,2016,2019)

    Boisgontier
     

    Pièces jointes:

    Dernière édition: 30 Novembre 2018
  14. ChTi160

    ChTi160 XLDnaute Barbatruc

    Inscrit depuis le :
    20 Février 2005
    Messages :
    5232
    "J'aime" reçus :
    147
    Travail/Loisirs :
    Pas grand Chose , faudrait pas que je me fatigue
    Habite à:
    Loin
    Utilise:
    Excel 2010 (PC)
    Bonsoir Cath
    Bonsoir le Fil(JB) ,le Forum
    j'ai aussi constaté lors des tests un problème .
    message :
    je pense que cela vient de la non mise a jour des données du ComboBox2 .
    Tester passage du N° d'écriture 1 à 6 , les Numéros de Compte , n'étant pas mis à jour le N° ex : 7010 n'est pas dans la Liste du ComboBox2 .
    jean marie
     
  15. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Rebonsoir JB:),

    Merci pour ton aide. Je pense avoir comment ça plante, mais je me l'explique pas. Le message et la ligne où se produit l'erreur est au post #5

    J'avais aussi une erreur dans la macro ci-dessous corrigée (est-ce bon?). Parce qu'il y a 2 colonnes distinctes: Dépenses et Recettes.
    Code (Visual Basic):
    Private Sub TotalFacture()
       Dim i As Byte
       Dim t As Single   'déclare la variable T (Total) / Type à adapter
       With ListBox1   'prend en compte la ListBox1 (à adapter)
          If .ListCount = 0 Then
             t = 0
          Else
             For i = 0 To .ListCount - 1   'boucle sur tous les lignes de la ListBox1
                If .Column(9, i) = "Dépenses" Then
                   t = t + CDbl(.Column(5, i))   'définit le total T (à adapter car tu parles de la colonne 7 et la c'est la "7ème" colonne)
                Else
                   t = t + CDbl(.Column(6, i))
                End If
             Next i   'prochaine ligne de la boucle
          End If
       End With   'fin de la prise en compte de la ListBox1
       TotalFact = t
    End Sub
    Dans la bd pratiquement toutes les écritures sont des Dépenses et une seule Recettes (n°6).
    Si au premier choix en combobox1 ça concerne des lignes dépenses et qu'on clique dans la listbox le plantage ne se produit pas.
    Ensuite si on sélectionne la n°6 qui est une recette, dès que l'on clique dans la listbox le plantage se produit.

    Si à l'ouverture du formulaire on commence par choix la n°6 recettes, clique dans la listbox puis sélection par ex: n°2 Dépenses et clic dans la listbox le plantage survient.

    Je commence à désespérer.

    Encore merci.

    edit: @ChTi160 : Bonsoir pas vu, Merci beaucoup. C'est surement, ce que tu dis. J'avoue, je suis saturé. Cela fait un bon mois (pas tous les jours) et je ne m'en sors pas. Merci à toi.
     
    Dernière édition: 30 Novembre 2018
  16. ChTi160

    ChTi160 XLDnaute Barbatruc

    Inscrit depuis le :
    20 Février 2005
    Messages :
    5232
    "J'aime" reçus :
    147
    Travail/Loisirs :
    Pas grand Chose , faudrait pas que je me fatigue
    Habite à:
    Loin
    Utilise:
    Excel 2010 (PC)
    Re
    Ne te decourage pas !
    Tu avances et c est bien !
    Je regarde ton fichier des que possible(dimanche) pas avant.
    Je verrai alors si tu as reussi a finaliser.
    Jean marie
     
  17. jpb388

    jpb388 XLDnaute Accro

    Inscrit depuis le :
    2 Mars 2010
    Messages :
    1516
    "J'aime" reçus :
    34
    Sexe :
    Masculin
    Habite à:
    TREGUNC (29S)
    Utilise:
    Excel 2010 (PC)
    Bonjour à vous tous,Boisgontier et chti160
    étant absent c'est dernière 48 h je n'ai pu te répondre de suite
    mais tu es en bonne main avec Boisgontier et chti160
    Bon WE
    jp
     
  18. ChTi160

    ChTi160 XLDnaute Barbatruc

    Inscrit depuis le :
    20 Février 2005
    Messages :
    5232
    "J'aime" reçus :
    147
    Travail/Loisirs :
    Pas grand Chose , faudrait pas que je me fatigue
    Habite à:
    Loin
    Utilise:
    Excel 2010 (PC)
    Bonjour Cath
    Bonjour le Fil ,le Forum
    Merci JP , j’espère , que tu vas bien !
    Cath ,pourquoi une procédure (TotalFacture)alors que tu peux faire cela lors du chargement de la ListBox .
    Peux tu me dire ce qui doit figurer dans ces contrôles Total ,Contrôle Montants et Total du Frame Ligne à Modifier ?
    Ensuite lorsque tu choisis un N° dans le ComboBox1 que doivent contenir les ComboBox "Compte" et "Initiateur "
    Met l'exemple de la sélection des N°2 et N° 6 .

    Merci
    Bonne Journée
    jean marie
     
  19. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Bonjour, Boisgontier:), Jpb388:), ChTi160:),

    Merci de vous intéresser à mon problème et votre aide.

    La feuille ‘’Comptes’’ est alimentée à partir d’un formulaire (aidé par Boisgontier pour alimenter la ListBox).

    Le processus était le suivant:

    Une facture peut comporter plusieurs lignes. Le total de la facture est saisi dans une textboxA, ensuite via des comboboxs et textboxs les renseignements d’une ligne de facture sont complétés. Au clic sur un bouton on alimente la ListBox. La somme des montants de la listbox est comparée au total de la facture (textboxA), s’ils sont égaux, un bouton est activé pour permettre le transfert des lignes de la Listbox vers la feuille comptes.
    J’avais cette procédure dans le 1er formulaire, je l’ai réutilisé.

    Lors de la saisie d’une facture des erreurs peuvent être commises (sauf pour total de la facture).

    L’idée est de sélectionner une facture en combobox1 ex :N°2 qui correspond à une dépense (que l’on retrouve sur la feuille comptes en colonne J (9) et le total de la facture est repris sur chaque ligne de la facture en colonne I (8).

    Au choix de n°2, Affichage dans la listbox des lignes de la n°2. Cette dernière étant une dépenses, la combobox2 doit contenir les données concernant une dépense à partir de la feuille CodeComptes et la combobox3 à partir de la feuille Initiateurs . Et ce, afin de faciliter le remplissage des différents contrôles (frame1).

    Au choix d’une ligne dans la listbox, les contrôles (frame1) sont renseignés. On doit pouvoir modifier le compte (combobox2=items dépenses), qui aura pour effet de compléter les textbox3 (libellé) et textbox6 (Budget/prévi). La combobox3 contiendra les initiateurs dépenses.

    ex: affichage combobox2 (comporte 3 colonnes dont une largeur= 0, non visible). On aura le n° de compte, le libellé et le budget/prévi (non visible). Dans le cas n°2 pour dépenses (colonne 8).

    Nb : la textbox7 (total) ne sera pas accessible. En effet, On ne doit pas pouvoir modifier le total d’une facture.

    Les textbox4 et 5 seront alternativement visible/invisible suivant le type d’opération (dépenses/recettes) (que je mettrai plus tard). La sommation pour dépenses est la colonne 4 de la listbox.

    Pour la n°6, c’est une recette. C’est le même raisonnement sauf qu’il faille récupérer les données Recettes pour alimenter la combobox2 et 3. La sommation concernera la colonne 5 (listbox) au lieu de 4.

    J’espère que j’ai été plus claire cette fois-ci et surtout que mon raisonnement ne soit pas tordu.

    Mes remerciements. Bon week-end.;)
     
  20. jpb388

    jpb388 XLDnaute Accro

    Inscrit depuis le :
    2 Mars 2010
    Messages :
    1516
    "J'aime" reçus :
    34
    Sexe :
    Masculin
    Habite à:
    TREGUNC (29S)
    Utilise:
    Excel 2010 (PC)
    Bonsoir à tous
    j'en suis à la modification de la ligne listbox
    je ne comprend pas bien ta phrase
    5- Si le montant calculé de la textbox TxtCtrlMontant est égal total de la facture col9 figurant dans textbox7. Alors le bouton Valider les modifications sera actif pour modifier les lignes de la listbox dans la bd (feuille comptes).
    si on change le prix il y aura forcément une différence
    Merci Chti160 tout va bien j'espère qu'il en est de même pour toi
     

    Pièces jointes:

  21. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Bonsoir, Merci pour tous vos efforts à me venir en aide.
    En effet, il est bien difficile de comprendre si on vous explique mal la problématique.
    Je ne suis pas arrivé à ce point, il s'agit du bouton qui se trouve dans la Frame1.

    Pour mieux comprendre mon problème, si tu observes bien la feuille 'comptes', pour par exemple la facture N°1. Il s'agit d'une dépense, on retrouve le type en colonne J (et sur l'userform en textbox8). En colonne F (dépenses) on trouve le montant de la facture (et sur l'userform en textbox4). ici j'ouvre un parenthèse: Il s'agissait d'une recette la colonne correspondante sur la feuille est la colonne G et sur l'userform la textbox5.
    La colonne I, représente le total de la facture n°1. Le total d'une facture est repris pour chaque ligne de la facture et qui se retrouve sur l'userform en textbox7(total).
    Etant donné, qu'il n'est pas autorisé de modifier le total d'une facture mais permis de corriger les comptes, l'initiateur, le montant d'une ligne de la facture. Les modifications doivent s'effectuer dans la listbox. Si et seulement si, le total des lignes de la listbox est égal au montant initial (col I sur la feuille et textbox7 sur l'userform).

    J'espère que j'ai mieux expliqué.

    Merci beaucoup.

    Bonne soirée.
     

Partager cette page