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

Ismagapi

XLDnaute Junior
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.
 

Ismagapi

XLDnaute Junior
Bonjour CHALET53,
J'ai testé le fichier modifié, merci de t'y intéresser.
Je remarque qu'à chaque mouvement du Combobox, qu'il y ait eu des changements ou pas le message apparaît. Cela peut être fastidieux à la longue pour manipuler les différents contacts.
N'y a t'il pas un moyen de pouvoir contrôler s'il y a eu des modifications ou pas ? Si oui on insère le message si non on peux continuer à manipuler les autres contacts ?

De plus, je vois que vous maîtrisez le code VBA (moi je débute), y'a t'il un moyen de classer mon Combobox par ordre Alphabétique car il reprend les contacts mais dans l'ordre d'insertion des contacts.
Merci par avance, cette communauté d'entraide est vraiment utile ...
 

Dranreb

XLDnaute Barbatruc
Bonjour.
L'objet ControlsAssociés est muni d'une méthode ValeurDifférente renvoyant un Boolean indiquant si au moins un des contrôles dont il a la charge affiche une valeur différente de celle d'un TVL (tableau des valeurs de la ligne)
 

Dranreb

XLDnaute Barbatruc
Vous pouvez par exemple mettre à False la propriété Enabled des ComboBox liées pour interdire d'y spécifier autre chose tant qu'une décision n'aura pas été prise à propos de modifs apportées dans les contrôles associés (soit enregistrer la ligne soit annuler pour les débloquer)
 

CHALET53

XLDnaute Barbatruc
Bonjour,

Pour ce qui est du tri de la combobox, un exemple en pièce jointe. Il faut gérer le numéro de ligne pour pouvoir faire les modifications sur la bonne ligne
 

Pièces jointes

  • Combo Trié Récup avec ligne.xlsm
    25.3 KB · Affichages: 7

Dranreb

XLDnaute Barbatruc
Tout cela est automatique dans la fourniture que j'ai indiquée, les listes classées et sans doublon des ComboBox prises en charge pour la recherche et la préservation de la chaine des listes de numéros de lignes dans la base d'où elles sont tirées. L'évènement BingoUn de l'objet ComboBoxLiée livre directement le numéro de la ligne dans la base où figure une certaine combinaison de valeurs saisies dans les ComboBox, sans avoir eu besoin pour cela de refaire la moindre recherche dans celle ci.
 
Dernière édition:

Ismagapi

XLDnaute Junior
Bonjour Chalet53, et le Forum en général,
Je viens d'essayer d'intégrer tes codes dans mon fichier que j'avais un petit peu avancé .... ET là problème, Erreur d’exécution '9' L'indice n'appartient pas à la sélection et impossible de trouver mon erreur et lorsque je lance le Débogueur, cela fonctionne jusque l'affichage mon formulaire. Peux tu m'aider à résoudre mon erreur ?
Merci, cela m’enlèverait une grosse épine du pied ...
 

CHALET53

XLDnaute Barbatruc
Re,
tu n'as pas intégré toutes les modifs
IL y en a dans Combobox1_Change
Combobox1_click
CommandButton2_Click
....
Ne serait-il pas plus simple de copier coller l'ensemble du code lié au Userform pour être sûr d'avoir toutes les modifs
Je suis tombé sur : Erreur d'exécution 13

a+
 

Ismagapi

XLDnaute Junior
Bonjour Chalet53,
J'ai réussi à intégrer ton code dans mon Userform que j'avais avancé. Cela marche et je t'en remercie, mais lorsque j'arrive à l'enregistrement de la 13eme Assistante familiale, le code fait une erreur.
Erreur d’exécution '9' L'indice n'appartient pas à la sélection.
L'erreur se situe sur temp = table(J, c): table(J, c) = table(i, c): table(i, c) = temp
dans le module 1 Sub TriCD
Avec J=8 et c=10.
Sinon pour les 12 entrées précédentes, aucun problème. Le soucis c'est que j'ai 600 contacts à rentrer derrière qui sont stockées sur une base de données originale à part. Lorsque je fais copier coller des contacts, j'ai cette erreur. Mais juste lorsque j'en ai plus que 12. Comment résoudre cette erreur ?
Ci dessous le code de mon module

Public nm As String, nminit As String
Public flag As Integer, flg1 As Integer, flg2 As Integer
Public tb(200)

Sub Bouton1_Cliquer()
flag = 0
UserForm1.Show
End Sub
Sub TriCD(table(), xn, col, ordre, nbcol)
col = 0
ecart = xn ' tri shell
Do While ecart >= 1
ecart = ecart \ 2
inv = True
Do While inv
inv = False
For i = 0 To xn - ecart
J = i + ecart
If ordre Then
X = (table(i, col) < table(J, col))
Else
X = (table(i, col) > table(J, col))
End If
If X Then
inv = True
For c = 0 To nbcol - 1
temp = table(J, c): table(J, c) = table(i, c): table(i, c) = temp
Next
End If
Next
Loop
Loop
' Stop
End Sub


Et le code d'appel dans mon userform de mon module

....
With Me.ComboBox1
.ColumnCount = 2
Me.Label280.Visible = False
For J = 3 To WS.Range("C" & Rows.Count).End(xlUp).Row
.AddItem WS.Range("C" & J)
.Column(1, .ListCount - 1) = J
Next J
'Stop
If Me.ComboBox1.ListCount < 1 Then Exit Sub
col = 2
Dim a()
a = Me.ComboBox1.List
nbcol = UBound(a, 1) - LBound(a, 1) + 1
Call TriCD(a(), UBound(a), col - 1, False, nbcol)
Me.ComboBox1.List = a
End With
....

Merci pour votre aide
 

Ismagapi

XLDnaute Junior
Merci CHALET53,
Cela marche mais maintenant cela bloque sur tous les doublons de ma liste :( . Des que j'ai 2 noms identiques la flèche qui permet de descendre les noms vers le bas se bloque sur le 1er doublon. Idem si je veux utiliser la souris.
Une idée du problème ?
Merci de ton intérêt à ma demande
 

Discussions similaires

Réponses
17
Affichages
662
Réponses
2
Affichages
247

Statistiques des forums

Discussions
312 270
Messages
2 086 685
Membres
103 370
dernier inscrit
pasval