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 :

Problème débogage vba formulaire de modification. [XL-2007]


Sujet :

Macros et VBA Excel

  1. #21
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Que ton code fonctionne ok peut importe, que le mien peut mieux faire sens aucun doute!

    Seul le formulaire est utile il est ouvert, la methode de notre amis pour mètre à jour excel est convenable dans le contexte qui pour le coup ne te gène pas alors si il avait 100 contrôles mais je passe.

    En fait son code suffirait presque il ne lui manque que ce que je décris au poste #2 à oui les 100 contrôles qui ne te gêne pas dans un sens te gêne dans l'autre. Au niveau cohérence j'ai connu mieux.

    Il veau mieux un code farfelu et ésotérique ! Pourquoi pas 4 module de classes?
    Il serait sage de tester le code donné plutôt que de parler d'âneries. Evidemment qu'il n'y a pas 100 contrôles, actuellement. Mais si on laisse le demandeur avec ta solution pour 5 contrôles, il l'appliquera forcément lorsqu'il en aura 10, 20, 50 ou 100, et il placera autant de lignes dans la proc de nettoyage qui, soit dit en passant n'existe pas, tout se faisant dans l'événement CommandButton1_Click, ce qui n'est pas très propre.
    spéculation et quel mépris!

    c'est bien ton code non?
    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
    24
    25
    26
    27
    28
    29
    30
      Do
        With usfContact
          .cboID.List = Range("t_Contacts[Code]").Value
          .LoadDatasFunction = "LoadDatas"
          .Show
          Result = .Choice
          If Result = "Validate" Then
            If .cboID.Value <> "" Then
              Set Cell = Range("t_Contacts[Code]")(.cboID.ListIndex + 1, 1)
              Cell(1, 0).Value = .tboFirstName.Value 'et avec 100 controles!
              Cell(1, 2).Value = .tboLastName.Value
              MsgBox "Modifications effectuées"
            End If
          End If
        End With
        Unload usfContact
      Loop While Result = "Validate"
    End Sub
    
    
    Sub LoadDatas()
      Dim Cell As Range
      
      With usfContact
        Set Cell = Range("t_Contacts[Code]")(.cboID.ListIndex + 1)
        .tboFirstName.Value = Cell(1, 0).Value  'et avec 100 controles!
        .tboLastName.Value = Cell(1, 2).Value
      End With
    End Sub
    proposes lui une solution avec la lecture écriture et réinitialisation avec vba pour ne pas gérer de centaines de lignes mais sois cohérent

    ton code est farfelue! pour le coup j'ai argumenté!

    et comme d’habitude tu vas mettre en évidence la paille que j'ai dans l’œil alors que tu as une poutre!
    Dernière modification par Invité ; 16/06/2019 à 14h59.

  2. #22
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    unload userform1
    userform1.show
    n'implique absolument pas que les textbox doivent être vides. Si ton userform a le code suivant, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub initialize()
    textbox1.value=format(date,"dd/mm/yy")
    end sub
    Ton code textbox1.value="" n'y mettra pas la date du jour alors que le déchargement/rechargement le fera.


    Pour la cohérence de mon code farfelu, forcément que si tu as x contrôles, en l'absence de la mise en place d'une boucle, tu auras x lignes qui transfèrent les données du userform dans la table de données. Ca me paraît normal et je ne vois rien de farfelu ni d'incohérent là-dedans. Il faudrait normalement programmer différemment avec une boucle qui balaie une table de mappage, mais chaque chose en son temps. Ca ne peut se réaliser que dans une architecture propre et certainement pas avec plein de code dans un commandbutton1_click. C'est une chose d'avoir x lignes de transfert, c'en est une autre d'avoir x lignes de nettoyage alors que deux suffisent et qu'en plus, elles réalisent le travail correctement, à savoir réinitialiser les contrôles comme ils doivent l'être et que rien ne dit, avec le code parcellaire qui a été donné, qu'il n'y a pas un Initialize à faire jouer.


    Pour ce qui est du mépris dont tu parles, prends-le comme tu veux. Je maintiens que ce n'est pas codé proprement que de coder la vérification, le transfert en table et le nettoyage dans une procédure événementielle. Pourquoi? Parce que tu ne sais pas tester correctement les portions de code qui ont des responsabilités différentes. Tu ne sais tester ton nettoyage qu'en réalisant ton transfert. Une bonne pratique en programmation est d'écrire des procs/fonctions qui ont une et une seule responsabilité. Ici, le code du bouton en a trois: Vérifcation, transfert, nettoyage. Ce n'est pas coder proprement que de coder ainsi. Et que tu prennes cela pour du mépris ou pour ce que tu veux, je m'en fous, je maintiens que, pour moi, ce n'est pas coder proprement. Pour moi, si on veut nettoyer dans le userform avec du code propre et une architecture correcte, il faudrait a minima ceci
    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
    sub commandbutton1_click()
      if DatasAreOk then
        transferInTable
        ClearControls
      else
        msgbox...
      end if
    end sub
     
    function DataAreOk() as boolean
      ...
      ...
    end function
     
    sub TransferInTable()
      ...
      ...
    end sub
     
    sub ClearControls()
      ...
      ...
    end sub
    Comme ton seul "argument" est de dire que c'est farfelu, je m'en fous royalement. Je sais que programmer comme je le fais est mieux que de programmer tout à l'arrache dans une proc événementielle, et ton avis m'importe peu. Les lecteurs jugeront nos arguments respectifs. C'est bien plus pour eux que pour toi que je détaille autant mes réponses.

    Pour ce qui est de tes "arguments", n'ayant rien vu d'autre que de l'insulte, je ne saurais pas juger de leur pertinence.


    Je terminerai en disant que j'agis ici sous mes vrais nom et prénom, et que je ne me cache pas lâchement derrière un pseudo pour parler de code farfelu et autres sans aucune justification technique. Ce que je dis ici, je l'assume au grand jour, et je préfère mille fois une approche systématique du code et ma manière "farfelue" de coder et d'approcher la programmation que la tienne

    Si maintenant on pouvait laisser la parole au demandeur initial et laisser les lecteurs apprécier nos approches respectives, ce serait chouette. Je ne te convaincrai pas, et bien sûr, tu ne me convaincras pas non plus, surtout sans arguments et en utilisant l'insulte.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #23
    Invité
    Invité(e)
    Par défaut
    tu as vraisemblablement un problème d'égo et je ne vois pas comment ça aiderait le demandeur de discuter avec toi!

    pour le pseudo ça me paraissait légale sur développez.com, pour me cacher derrière encor faut et tu sais ce que je veux dire!

    avant c'était mon nom qui apparaissais! je recevais des mail en privé qui trouvais mon pseudo rigolo ou qui m'insultaient pour mes fautes d’orthographe! quand j'ai ouvert un compte au nom de dysorthographie c'est toi qui ma demander de faire un choix!

    j'ai distribué un -1 à pierre sur tous les postes c'est drôle ils ont disparue!



    je ne critique pas sens vérifier! pourquoi le formulaire ne contient pas la totalité du code? ha oui c'est pas propre!

    Nom : Sans titre.png
Affichages : 250
Taille : 346,8 Ko

    au revoir ok corral!
    Dernière modification par Invité ; 16/06/2019 à 18h33.

  4. #24
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Merci Pierre Fauconnier et dysorthographie pour votre aide !
    malgré votre mésentente sur le code ,vos arguments sont très utiles et sont source de savoir,ça ma appris beaucoup de choses !
    en faite il a fallu juste que je modifie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Unload UserForm1
    'UserForm1.Show 0
    End Sub
    Grand merci !

  5. #25
    Invité
    Invité(e)
    Par défaut
    Bonsoir Chernobyl123,
    Celle la je la mets sur l'oreille je la fumerai plus tard!
    Dernière modification par Invité ; 17/06/2019 à 17h29.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [AC-2003] VBA formulaire après modif
    Par KANIN dans le forum VBA Access
    Réponses: 1
    Dernier message: 21/01/2013, 16h00
  2. Réponses: 3
    Dernier message: 07/07/2006, 16h06
  3. [VBA] Détecter une modification sur formulaire
    Par BaRonm3 dans le forum Access
    Réponses: 10
    Dernier message: 21/06/2006, 12h12
  4. [VBA-A] Problème importation de formulaire
    Par eLoOe dans le forum VBA Access
    Réponses: 6
    Dernier message: 22/05/2006, 11h03
  5. problème sur un formulaire de modification
    Par puppusse79 dans le forum Access
    Réponses: 13
    Dernier message: 14/04/2006, 15h48

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