IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Modification formulaire ne fonctionne pas


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Modification formulaire ne fonctionne pas
    Bonjour à tous,

    J'ai un tableau sous excel regroupant l'ensemble de mes clients (des cabinets)

    J'ai créer un formulaire pour aouter, supprimer, ou modifier un client.

    J'ai créer une listbox qui reprend mon tableau excel

    Lorsque je clique sur une ligne de la listbox, toutes les informations du client apparaissent dans des labelbox visible+ textbox non visible
    Lorsque je clique sur MODIFIER, les labelbox deviennent non visible et les txtbox deviennent visible pour y apporter des modifications.

    Lorsque je modifie une info client apparaissant dans une txtbox, je souhaiterai , en validant, mettre à jour mon tableau.

    Mais ma modification n'est pas prise en compte. Seule le nom client peut être modifié !

    Pour info :
    Tableau trés simple :
    colonne A :Num client
    colonne B :Nom client
    colonne C :Forme juridique (FJ)
    colonne D :Siret
    colonne E :Siren

    Aucune erreur n'apparait.
    Mais la modification ne s'effectue que si je change le nom du client.

    Je m'arrache les cheveux depuis 2 heures sur cela, j'ai d'autres programmes qui utilisent ce code et ça fonctionne !

    Merci à tout ceux qui pourraient m'aider !!! Et aux autres aussi ,)

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Private Sub CMD_VALIDER_Click()
    Call parametrage
     
    Dim C As Range
     
    With ong_cab.Range("A1:E" & fin_ong_cab)    ' ong_cab et fin_ong_cab sont déterminés dans le paramétrage
        Set C = .Find(USER_CAB.TXT_NUM.Value, LookIn:=xlValues)
        If Not C Is Nothing Then
            Do
     
     
    C.Offset(0, 1).Value = USER_CAB.TXT_NOM.Text            
    C.Offset(0, 2).Value = USER_CAB.TXT_FC.Text
    C.Offset(0, 3).Value = USER_CAB.TXT_SIRET.Text
    C.Offset(0, 4).Value = USER_CAB.TXT_SIREN.Text
     
                Set C = .FindNext(C)
            Loop While C.Row = fin_ong_cab
     
        End If
     
     
        End With

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Impossible de te répondre avec assurance sans :
    - savoir par quel code est abondée ta listbox
    - connaître le nom de ta listbox
    - savoir ce que tu fais au click sur la listbox
    En l'état actuel (sans plus de précisions) de ce que tu exposes, j'aurais tendance à dire qu'aucune méthode Find ne serait nécessaire si ta listbox était liée à ta plage de données.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Candidat au Club
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut autre test qui ne fonctionne pas
    Je viens de faire un autre test, et celui ci ne fonctionne pas non plus .

    Le nom du client change mais les autres informations ne changent pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub CMD_VALIDER_Click()
    Call parametrage
     
    ligne = USER_CAB.LIST_CABINET.ListIndex + 3
     
    Sheets("CAB").Cells((ligne), 2).Value = USER_CAB.TXT_NOM.Value
    Sheets("CAB").Cells((ligne), 3).Value = USER_CAB.TXT_FC.Value
    Sheets("CAB").Cells((ligne), 4).Value = USER_CAB.TXT_SIRET.Value
    Sheets("CAB").Cells((ligne), 5).Value = USER_CAB.TXT_SIREN.Value
     
    end sub
    Bref c'est vraiment bizarre, il s'agit surement d'une erreur toute bête que je ne vois pas mais c'est trés étrange....

  4. #4
    Candidat au Club
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Réponses
    Citation Envoyé par unparia Voir le message
    Bonjour
    Impossible de te répondre avec assurance sans :
    - savoir par quel code est abondée ta listbox
    - connaître le nom de ta listbox
    - savoir ce que tu fais au click sur la listbox
    En l'état actuel (sans plus de précisions) de ce que tu exposes, j'aurais tendance à dire qu'aucune méthode Find ne serait nécessaire si ta listbox était liée à ta plage de données.
    Merci pour ta réponse !

    Alors :

    La listbox reprenant la liste de mes clients est alimenté par
    USER_initialize : LIST_CAB.rowsource = "=LISTE_CABINET" --> "Liste cabinet" est le nom attribué en gestionnaire de nom de ma liste de client de A à E avec fonction décalé.
    Le nom de ma listbox est : LIST_CABINET

    Au click sur la list box :

    Je rends visible les labels et non visibles les txtbox

    les labels et les txtbox sont alimentés par la listbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TXT_NUM.Value = LIST_CABINET.List(LIST_CABINET.ListIndex, 0)
    TXT_NOM.Value = LIST_CABINET.List(LIST_CABINET.ListIndex, 1)
    TXT_FC.Value = LIST_CABINET.List(LIST_CABINET.ListIndex, 2)
    TXT_SIRET.Value = LIST_CABINET.List(LIST_CABINET.ListIndex, 3)
    TXT_SIREN.Value = LIST_CABINET.List(LIST_CABINET.ListIndex, 4)
    idem pour les labels :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    LABEL_NUM.Caption = LIST_CABINET.List(LIST_CABINET.ListIndex, 0)
    LABEL_NOM.Caption = LIST_CABINET.List(LIST_CABINET.ListIndex, 1)
    LABEL_FC.Caption = LIST_CABINET.List(LIST_CABINET.ListIndex, 2)
    LABEL_SIRET.Caption = LIST_CABINET.List(LIST_CABINET.ListIndex, 3)
    LABEL_SIREN.Caption = Right(LIST_CABINET.List(LIST_CABINET.ListIndex, 3), 9)
    Concernant ton information :
    "méthode Find non nécessaire si listbox liée à plage de données"
    Mon niveau VBA ne me permet pas de le comprendre.

    Pour te répondre simplement, je dirais que je n’utilise pas Find sur la liste box mais sur le tableau excel.

    J'utilise find pour recherche dans mon tableau excel le numéro de client en colonne A et j'utilise offset pour inscrire les informations dans les colonnes B, C, et D


    Merci pour toutes infos que tu pourrais me donné !

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Je vais te répondre ainsi : par un petit exemple :
    Dans cet exemple :
    - tes données en Feuil2, dans la plage a1:d11
    - la listbox sur userform : nommée Listbox1
    - les textboxes nommées textbox1, textbox2, textbox3 et textbox4
    - ton userform avec propriété showmodal à false (pour que tu puisse y voir clair)
    Ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Dim plage As Range
     
    Private Sub UserForm_Activate()
      Set plage = Worksheets("Feuil2").Range("A2:D11")
      With ListBox1
        .RowSource = "feuil2!" & plage.Address
        .ColumnCount = 4
      End With
    End Sub
     
    Private Sub ListBox1_Click()
       Dim toto As Long
       toto = ListBox1.ListIndex + plage.Row
       TextBox1.ControlSource = "feuil2!A" & toto
       TextBox2.ControlSource = "feuil2!B" & toto
       TextBox3.ControlSource = "feuil2!C" & toto
       TextBox4.ControlSource = "feuil2!D" & toto
    End Sub
    Et rien de plus
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  6. #6
    Candidat au Club
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Nouvelle info
    Suite au message d'Unparia, je viens de tester d'écrire en brut les informations à modifier et là , ça fonctionne.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    C.Offset(0, 1).Value = USER_CAB.TXT_NOM.Text
    C.Offset(0, 2).Value = USER_CAB.TXT_FC.Text
    C.Offset(0, 3).Value = "TEST"
    C.Offset(0, 4).Value = USER_CAB.TXT_SIREN.Text
    C.Offset(0, 5).Value = USER_CAB.TXT_FJ.Text
    Donc je suppose que puisque mes TXTBOX sont liée à la listbox, la valeur mémorisée reste celle de la listbox ?

    Par contre je ne comprends pas pourquoi la TXTBOX NOM change quand même .

  7. #7
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Essaye mon exemple au-dessus. Pas la peine de tout ce que tu fais, pour faire ce qui peut l'être en automatisme.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  8. #8
    Candidat au Club
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Ca fonctionne !
    Ok alors si je comprends bien, tu suggères que, pour les txtbox, je dois récupérer les informations directement dans le tableau excel plutôt que dans la listbox ?

    Ok je l'ai fait et ça fonctionne super !

    Mais ça m'a fait une autre anomalie :
    Quand je modifie une textbox , ça fonctionne mais par contre les label box deviennent visibles et les txtbox deviennent non visibles (provient peut être de mon code listbox_click qui rend visible les labels et non visible les txt ??? mais en quoi faire une modif relance le click sur la listbox)

    Merci beaucoup !! Je vais gérer les visibles/non visible et ça devrait aller.

    Par contre, sait tu pourquoi la 1er colonne fonctionnait ? Le nom changeait mais pas les autres informations alors que toutes étaient récupérer dans la listbox ??


    Merci !

  9. #9
    Candidat au Club
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par unparia Voir le message
    Essaye mon exemple au-dessus. Pas la peine de tout ce que tu fais, pour faire ce qui peut l'être en automatisme.
    Ha oui du coup j'ai même plus besoin de mon bouton modifier ??

    Le contrôle source gère deux sens ? récupère les infos sur le tableaux et les met dans les txt et fais aussi l'inverse la valeur de la txtbox devient la valeur du tableau ???

  10. #10
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    OUI.
    Pense maintenant à libérer cette discussion, en la marquant résolue.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  11. #11
    Candidat au Club
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut synthèse
    Ok merci je ne connaissais pas la fonction controlsource et elle est effectivement très pratique mais elle implique de ne pas faire d'erreur, on peux pas revenir en arrière aprés la saisie ?

    Et du coup je sais toujours pas pourquoi mon code de base ne fonctionnait pas correctement.

    Merci en tout cas, je peux enfin avancer sur mon tableau !

  12. #12
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    je ne connaissais pas la fonction controlsource
    Il ne s'agit pas d'une "fonction", mais d'une propriété.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modification du formulaire ne fonctionne pas Merci de m'apporter d'aide
    Par abdelkarim_1987 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/08/2013, 09h34
  2. Mon formulaire ne fonctionne pas
    Par misslinoa dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/02/2008, 14h38
  3. envoi formulaire ne fonctionne pas
    Par isarno dans le forum Dreamweaver
    Réponses: 7
    Dernier message: 06/12/2007, 22h44
  4. Réponses: 3
    Dernier message: 19/09/2007, 13h09
  5. [MySQL] Redirection après formulaire ne fonctionne pas
    Par Solexensolo dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 06/12/2006, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo