reafficher le formulaire de départ pour pouvoir modifier les données

toto3371

XLDnaute Nouveau
Bonjour,
Je pense que mon problème est proche du votre enfin si j'ai bien tout compris.

Je m'occupe d'une association et je veux simplifier la saisie des données administratives concernant chaque membre sur excel.

Pour cela j'ai créé différentes colonnes sous excel (Nom, Prénom, Date de naissance, téléphone, adresse, ...)

Afin de les remplir facilement, j'ai créé un formulaire avec VBA. Mon formulaire marche parfaitement.

Seulement je voudrais pouvoir faire l'inverse, c'est à dire que si je veux modifier une données concernant un membre il me faudrait que mon formulaire se réaffiche mais avec les données remplie pour ce membre et ainsi je n'ai plus qu'à modifier les données erronées.

Je ne sais pas si je suis clair.

Merci d'avance en tout cas de votre aide.
 
G

Guest

Guest
Re : reafficher le formulaire de départ pour pouvoir modifier les données

Re Toto,

Oui, Tu ouvre l'éditeur VBE (ALT+F11)
Dans la liste de gauche tu sélectionnes VbaProject suivit du nom du classeur.xls Clik-droit, Propriétés, protection.

Attention à bien conserver ou te rappeler le mot de passe.
Avant de faire cela je te suggère de:
Faire un click-droit sur le nom des userforms (dans la même liste) et de faire 'Exporter un fichier'.
Si tu as des modules de macro, fais pareil.
Ainsi si tu perdais le mot de passe tu pourras toujours récupérer ton travail (userform et modules) en important les fichiers idoines.

P.S. je viens de constater une erreur de code dans UserForm_Initialize.

voici à mettre au début de l'évènement pour les deux userform:

Code:
 Private Sub UserForm_Initialize()
On Error Resume Next
   'Initialisation de la feuille
    Set Sh = Sheets("Donnees")
    If Err.Number = 9 Then
        MsgBox "La feuille 'Donnees' n'existe plus!" & vbCrLf & "impossible de continuer", "Saisie coordonnées"
        Exit Sub
    End If
    If ActiveSheet.Name <> Sh.Name Then Sh.Activate
    On Error GoTo 0

Vérification de la présence de la feuille "donnees" si elle existent on vérifie qu'elle est activée sinon on sort.

Saches que les utilisateurs sont toujours susceptibles de faire quelque chose d'inattendu et que normalement pour cela le programme doit gérer les erreurs (prévues et imprévues)

A+
 
Dernière modification par un modérateur:
G

Guest

Guest
Re : reafficher le formulaire de départ pour pouvoir modifier les données

re,
Oui il est novice mais bon il aime jouer les touches à tout. J'ai rien contre en général mais j'ai pas envie de devoir retoucher le code tous les 4 matins.

Alors blinde ton application avec une gestion d'erreur solide.
Par exemple: que se passera-t-il s'il change le nom de la feuille, supprime une colonne, modifie la ligne d'entête (code Postale -> code Postal)supprime les données etc....

Pour cela tu peux protéger ta feuille et la déprotégée par macro au bon moment

A+
 

toto3371

XLDnaute Nouveau
Re : reafficher le formulaire de départ pour pouvoir modifier les données

Merci Hasco
J'ai copier ton bout de code dans les deux userform
mais quand je clique sur le bouton pour selectionner ce que je veux exporter il me met:
Erreur de compilation
Variable non définie
et il em surligne en bleu le "Sh = " du code


Re Toto,

Oui, Tu ouvre l'éditeur VBE (ALT+F11)
Dans la liste de gauche tu sélectionnes VbaProject suivit du nom du classeur.xls Clik-droit, Propriétés, protection.

Attention à bien conserver ou te rappeler le mot de passe.
Avant de faire cela je te suggère de:
Faire un click-droit sur le nom des userforms (dans la même liste) et de faire 'Exporter un fichier'.
Si tu as des modules de macro, fais pareil.
Ainsi si tu perdais le mot de passe tu pourras toujours récupérer ton travail (userform et modules) en important les fichiers idoines.

P.S. je viens de constater une erreur de code dans UserForm_Initialize.

voici à mettre au début de l'évènement pour les deux userform:

Code:
 Private Sub UserForm_Initialize()
On Error Resume Next
   'Initialisation de la feuille
    Set Sh = Sheets("Donnees")
    If Err.Number = 9 Then
        MsgBox "La feuille 'Donnees' n'existe plus!" & vbCrLf & "impossible de continuer", "Saisie coordonnées"
        Exit Sub
    End If
    If ActiveSheet.Name <> Sh.Name Then Sh.Activate
    On Error GoTo 0

Vérification de la présence de la feuille "donnees" si elle existent on vérifie qu'elle est activée sinon on sort.

Saches que les utilisateurs sont toujours susceptibles de faire quelque chose d'inattendu et que normalement pour cela le programme doit gérer les erreurs (prévues et imprévues)

A+
 
G

Guest

Guest
Re : reafficher le formulaire de départ pour pouvoir modifier les données

Re,

Bien évidement pour le userform usfcolonnesil faut déclarer la variable SH:

Code:
Private Sub UserForm_Initialize()
    Dim i As Long
    [COLOR=red][B]Dim Sh As Range[/B][/COLOR]
    On Error Resume Next
   'Initialisation de la feuille
    Set Sh = Sheets("Donnees")
    If Err.Number = 9 Then
        MsgBox "La feuille 'Donnees' n'existe plus!" & vbCrLf & "impossible de continuer", "Saisie coordonnées"
        Exit Sub
    End If
    If ActiveSheet.Name <> Sh.Name Then Sh.Activate
    On Error GoTo 0
 
'.....Reste du code

Chose qui est normalement faite dans le userform usfCoordonnees, en - tête de module puisque cette variable sert dans tout le code.

C'est le genre d'erreur que tu peux résoudre facilement, en essayant de comprendre comment cela fonctionne.

A+
 
Dernière modification par un modérateur:
G

Guest

Guest
Re : reafficher le formulaire de départ pour pouvoir modifier les données

Re,

Tu sélectionnes ta feuille "donnees" puis Dans l’onglet Révision (xl2007)tu cliques sur protéger la feuille, tu choisis les options et mot de passe voulus en laissant libre la sélection des cellules.

Dans tes macros, à chaque fois qu'un groupe de ligne modifie une ou des tu fais comme ci-dessous:

Code:
With Sh
         [COLOR=red][B].UnProtect "LeMotDePasseDeLaFeuille"[/B][/COLOR]
        ' Mise en place des valeurs saisies
        .Range("A" & NumLigne).Value = Nomconverti
        .Range("B" & NumLigne).Value = Prenomconverti
        .Range("C" & NumLigne) = ComboJour & "/" & ComboMois & "/" & ComboAnnée
        .Range("D" & NumLigne).Value = ComboSexe
        .Range("E" & NumLigne).Value = Format(TextFixe1 & TextFixe2 & TextFixe3 & TextFixe4 & TextFixe5, "@@.@@.@@.@@.@@")
        .Range("F" & NumLigne).Value = Format(TextPort1 & TextPort2 & TextPort3 & TextPort4 & TextPort5, "@@.@@.@@.@@.@@")
.Protect "LeMotDePasseDeLaFeuille"
End With
[/code]

Pour la méthode Protect vois les options dans l'aide en ligne. Ou fais une macro avec l'enregistreur de macro.

Voilà

A+
 

toto3371

XLDnaute Nouveau
Re : reafficher le formulaire de départ pour pouvoir modifier les données

Merci c'est nickel.

J'aurai maintenant deux questions supplémentaires: (tu vas finir par me trouver chiant si ce n'est déjà fait :()

1: Est-il possible de faire en sorte que les deux boutons "afficher formulaire" et "cacher et exporter" soient flottant c'est à dire qu'il soit toujours visible même si on descend très bas dans la liste avec l'ascenseur. En même temps ça permettrait de visualiser ce qu'il y a écrit derrière eux.

2: Je voudrais que quand j'affiche le formulaire je puisse aussi, en plus de rajouter un membre ou de modifier un membre, me permettre de supprimer un membre (c'est à dire supprimer sa ligne) avec une petite msgbox me demandant de confirmer.
 
G

Guest

Guest
Re : reafficher le formulaire de départ pour pouvoir modifier les données

Re toto,

vois dans le fichier joint si la solution trouvée pour ta demande 1 te convient.
A l'ouverture du classeur le menu contextuel des cellules est changé.
Fais un click-droit sur une cellule puis choisit l'option voulue.

Vois le code.

Pour la deuxième question, un nouveau bouton dans le userform a été créé.

A+
 

deado

XLDnaute Junior
Re : reafficher le formulaire de départ pour pouvoir modifier les données

c'est encore moi :)
j'ai un petit souci ( j'ai deja envoyer un MP a ChTi160 mais bon :) )
voila, je met mon fichier ou j'ai voulu mettre se que ChTi160 a mit :)
mais j'ai modifier selon mes besoins, j'ai rajouter 2 ComboBox et la j'arrive pas a récuperer les donner ni méme a les modifier, j'ai que les 3 premier TextBox que je peut récuperer et modifier, méme la 4em TextBox ne veut pas se modifier ( mais j'arrive a la récuperer)
donc j'aurai besoin d'une petite aide svp. j'ai essayé de modifier des truc mais rien a faire ....
y a aussi le fait de modifier une ligne ( ou de rajouter) le tris ne se fait pas, je dois double cliqué sur la cellule de la colonne A pour que le tris se fait ( apres lancement de la macro).
merci d'avance.( je continue a essayé de mon coté :) )
http://cjoint.com/?citkpZlIE4

ps : le userform c'est le UsF_RechAndModif
et les modules : module 11 module12 module13

--edite--
je viens de remarqué que les ligne créer ou modifier ne sont pas trier et ne sont pas listé par la suite, c'est a dire que si je lance une nouvelle recherche je ne les vois pas dans le resultat ... par contre avec mon petit userform ajouter, si je rajoute la méme ligne ca me dit que ca existe deja ....
et les nouvelle ajoute ecrase une ligne qui existe deja, mais la je crois que c'est a cause des champ vide lors de la creation.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 333
Messages
2 087 375
Membres
103 529
dernier inscrit
gonzi