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 :

Code VBA pour comparer un formulaire avant et après modifications ?


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Août 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Août 2020
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Code VBA pour comparer un formulaire avant et après modifications ?
    Bonjour au forum,

    Je reviens vers vous avec un autre soucis pour mon formulaire.

    J'alimente un formulaire Userform Multipage grâce à une ComboBox qui reprend chaque ligne de ma Base de données.

    Je souhaiterai que Si j'effectue des modifications dans mon formulaire, et que je change de Ligne dans mon ComboBox il y ait un Message qui me dit qu'il y a eu des modifications et qu'elles n'ont pas été enregistrées.

    Soit par comparaison entre le formulaire pré rempli à l'ouverture de mon Contact et avant le changement de contact par la ComboBox.

    Soit par l'intermédiaire d'un message qui indique que l'on a pas cliqué sur le bouton 'modifier'.

    A l'heure actuelle dans mon fichier le formulaire peut passer d'un contact à un autre que l'on ait validé les modifications ou pas. En plus, les modifications ne sont pas gardés

    en mémoire.

    Je ne sais pas si je suis assez clair.

    Merci à tous ceux qui me rendront ce grand service.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 184
    Points : 5 516
    Points
    5 516
    Par défaut
    Bonjour,

    A mon avis le plus simple est de rendre le déroulant ComboBox1 non visible tant que l'un des boutons Modifier, Enregistrer, Quitter n'a pas été cliqué. Cela peut s'obtenir ainsi:
    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
    Private Sub ComboBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
        ComboBox1.Visible = False
    End Sub
     
    Private Sub CommandButton2_Click()    '--- bouton Modifier
        ComboBox1.Visible = True
       '...
    End Sub
     
    Private Sub CommandButton1_Click()    '--- bouton Enregistrer
        ComboBox1.Visible = True
       '...
    End Sub
     
    Private Sub CommandButton3_Click()    '--- bouton Quitter
        ComboBox1.Visible = True
       '... ? ne propose pas sauver ce qui est en cours
        Unload Me
    End Sub
    Par ailleurs vous pourriez simplifier votre code en utilisant les instructions Select Case:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ComboBox26_Change()
        Select Case ComboBox26.Value
            Case "Accident de Travail", "Arrêt Maladie", "CMA Non Conformes", "ERDAF", "PEC Difficile", "???"
                Label191.Visible = True
                TextBox68.Visible = True
            Case Else
                Label191.Visible = False
                TextBox68.Visible = False
        End Select
    End Sub
    et utiliser la comparaison pour établir des Vrai/Faux:
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Private Sub ComboBox8_Change()
        Dim k As Integer
        k = ComboBox8.Value
     
        Label113.Visible = (k > 0)
        Label112.Visible = (k > 0)
        Label115.Visible = (k > 0)
        Label116.Visible = (k > 0)
        Label117.Visible = (k > 0)
        TextBox19.Visible = (k > 0)
        TextBox20.Visible = (k > 0)
        TextBox21.Visible = (k > 0)
        ComboBox9.Visible = (k > 0)
     
        Label118.Visible = (k > 1)
        Label119.Visible = (k > 1)
        Label120.Visible = (k > 1)
        Label121.Visible = (k > 1)
        Label122.Visible = (k > 1)
        TextBox22.Visible = (k > 1)
        TextBox23.Visible = (k > 1)
        TextBox24.Visible = (k > 1)
        ComboBox10.Visible = (k > 1)
     
        Label123.Visible = (k > 2)
        Label124.Visible = (k > 2)
        Label125.Visible = (k > 2)
        Label126.Visible = (k > 2)
        Label127.Visible = (k > 2)
        TextBox25.Visible = (k > 2)
        TextBox26.Visible = (k > 2)
        TextBox27.Visible = (k > 2)
        ComboBox11.Visible = (k > 2)
     
        Label128.Visible = (k > 3)
        Label129.Visible = (k > 3)
        Label130.Visible = (k > 3)
        Label131.Visible = (k > 3)
        Label132.Visible = (k > 3)
        TextBox28.Visible = (k > 3)
        TextBox29.Visible = (k > 3)
        TextBox30.Visible = (k > 3)
        ComboBox12.Visible = (k > 3)
     
        Label133.Visible = (k > 4)
        Label134.Visible = (k > 4)
        Label135.Visible = (k > 4)
        Label136.Visible = (k > 4)
        Label137.Visible = (k > 4)
        TextBox31.Visible = (k > 4)
        TextBox32.Visible = (k > 4)
        TextBox33.Visible = (k > 4)
        ComboBox13.Visible = (k > 4)
     
        Label138.Visible = (k > 5)
        Label139.Visible = (k > 5)
        Label140.Visible = (k > 5)
        Label141.Visible = (k > 5)
        Label142.Visible = (k > 5)
        TextBox34.Visible = (k > 5)
        TextBox35.Visible = (k > 5)
        TextBox36.Visible = (k > 5)
        ComboBox14.Visible = (k > 5)
    End Sub
    Cordialement.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Août 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Août 2020
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Bien vu ...
    Bonne solution je n'y avais pas pensé !!!
    Vraiment quelle malice.
    Merci pour votre solution.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Août 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Août 2020
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Bonjour et Merci encore EricDgn pour ta simplification et ta simplification de mon code cela marche super,

    Encore une petite colle qui me gène dans mon formulaire ...

    Je souhaite classer par ordre alphabétique mon Combobox1 qui affiche toutes mes lignes de contacts dans un formulaire. J'ai déjà essayé plusieurs code mais le Combobox1 est classé par ordre alphabétique mais cela déplace juste les Noms dans la colonne. Résultat les Noms ne sont plus en lien avec le reste de la ligne sur le tableau.

    Avant Classement:

    Nom Adresse

    C3--> ZOZO D4--> 12 Rue des Cocos

    C4--> ABABA D5--> 15 Rue des Codes

    Aprés Classement:

    Nom Adresse

    C3--> ABABA D4--> 12 Rue des Cocos

    C4--> ZOZO D5--> 15 Rue des Codes

    Lorsque je crée un nouveau contact, il se met à la fin de ma liste Combobox1 mais ne se classe pas alphabétiquement ?

    Comment y remédier ?

    Merci à tous ceux qui me rendront ce grand service.

Discussions similaires

  1. [AC-2013] Code VBA pour changer de formulaire de démarrage
    Par aleximan dans le forum IHM
    Réponses: 3
    Dernier message: 08/02/2017, 17h21
  2. [Toutes versions] Code VBA pour comparer des dates
    Par Tagada_Or dans le forum VBA Access
    Réponses: 17
    Dernier message: 24/09/2014, 09h08
  3. Réponses: 6
    Dernier message: 18/11/2013, 17h48
  4. [XL-2010] Code VBA pour comparer deux feuilles Excel
    Par sam013 dans le forum Excel
    Réponses: 1
    Dernier message: 13/08/2012, 14h53
  5. [VBA-A] Code vba pour inclure un formulaire Acces
    Par MadSquirrel dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/04/2006, 18h19

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