Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 UserForm multipages

murainesouspatate

XLDnaute Occasionnel
Bonjour à tous et à toutes,
Je suis en train de créer un classeur de suivi client à ma fille qui est esthéticienne.
Afin d'enregistrer, modifier ou supprimer des clients ainsi que la fiche client, j'ai créé un UserForm multipages.
Pour la page Enregistrement et consultation, j'ai réussi à les faire fonctionner grâce aux foires au questions et l'aide de certains sur ce forum.
Pour la page Modification, je ne sais pas comment renvoyer les données modifiées vers la feuille "Clients" sur la ligne du client sélectionné avec la ComboBox 1.

J'ai commencé la macro mais ne sais pas comment faire pour la suite. Je joint mon classeur test en pièce-jointe en espérant que quelqu'un puisse bien m'aider à résoudre mon problème, et surtout à m'expliquer le déroulement.
Je vous remercie par avance et vous souhaite une agréable journée.
Cordialement.
Roger
 

Pièces jointes

  • Test modifier données client.xlsm
    276.7 KB · Affichages: 34

Dranreb

XLDnaute Barbatruc
Bonjour.
Pourquoi un MultiPage ?
Je réalise toujours comme ça Ies UserForm de consultation et mise à jour: On tape d'abord dans les ComboBox les nom et prénom, et ensuite seulement on regade et décide s'il faut l'ajouter, modifier ou supprimer.
 

Pièces jointes

  • CLsCAsContacts.xlsm
    149.2 KB · Affichages: 34

JP.B

XLDnaute Nouveau
Bonjour

Je viens de regarder ton fichier car j'ai été confronté à ce genres de problématique.
Premier point : pourquoi faire 3 pages identiques ?
Pour ma part j'ai opté pour un bouton "Nouvel adhérent" avec une page vierge
et un bouton "Modifier", qui ramène toutes les info. de la ligne où est le curseur dans l'interface. On change les données et on réenregistre.

Deuxième point : aucun outil n'est nommé, et donc savoir ce qu'est le Combobox2 est une vraie galère.
En cliquant sur F4 tu peux nommer les éléments (ex Nom_Prénom)

Avance dans ce sens sur ta page 1 et je pourrais t'aider 'j'espère pour la suite.
Amicalement
JPB
 

Dranreb

XLDnaute Barbatruc
Demandez à votre fille s'il ne lui serait pas plus pratique comme ça, ce qui éviterait des manœuvres inutiles et le risque de créer un client qui existe déjà ou de vouloir en consulter un qui n'existe pas.
Éventuellement on pourrait coller un TabStrip dessus plutôt que de mettre 3 fois la même chose dans un MultiPage.
 

JP.B

XLDnaute Nouveau
Bonjour Dranreb

En me répondant, tous les participants à la discussion ont ton message, donc elle l'a lu aussi.
Par contre je ne connais pas le "TabStrip" ...
Cordialement
JPB
 

murainesouspatate

XLDnaute Occasionnel
Je viens de regarder ton fichier car j'ai été confronté à ce genres de problématique.
Bonjour, je l'ai conçu au format demandé par ma fille car elle a vue chez une de ses consœurs et qui lui a bien plu.
Je me rend compte que cela parait lourd comme le sous entend Dranreb, il est vrai que sa méthode est bien plus simple. Mais étant novice en VBA, je ne saurais le reproduire surtout sans explications du coup même en gardant mon format initial, je ne sais toujours pas comment faire pour renvoyer les modification apportées dans la feuille Client.
Cordialement.
 

Dranreb

XLDnaute Barbatruc
Il y a juste la Sub UserForm_Initialize à adapter. La Private Sub CBnEntrée_Click() ne change pas.
C'est elle qui renvoie dans le tableau Excel une ligne modifiée ou créée.
 
Dernière édition:

JP.B

XLDnaute Nouveau
Je te confirme que je ne connais pas la solution de Dranreb.
Mais je peux t'accompagner dans la construction de ton interface.
Premier point serait de nommer chaque objet de cette interface comme suggéré.
@ suivre
JPB
 

Dranreb

XLDnaute Barbatruc
Il y a des explication dans une page d'aide du classeur disponible ici, précurseur d'un .xlam aussi utilisable pour ça.
Mais le classeur joint au poste #2 est équipé des modules de service nécessaires.
S'il y avait des adaptations nécessaires en dehors de la Sub UserForm_Initialize je vous les ferais.
 
Dernière édition:

JP.B

XLDnaute Nouveau
@Dramreb
Pas de pb, mais nous avons l'un et l'autre 2 techniques différentes.
Je maitrise la mienne après des heures d'apprentissage et d'ajustements donc je ne vais pas me lancer dans une nouvelle technique, même si elle peut être plus performante.
Donc pour @Muraine... il faut en quelque sorte choisir son camp
@ suivre
JPB
 

JP.B

XLDnaute Nouveau
Petit ajout
je disparait pour ce matin
 

cp4

XLDnaute Barbatruc
Bonjour murainesouspatate , Dranreb , JP.B ,

@murainesouspatate : une proposition d'après ce que j'ai compris. Je n'ai pas testé. Débloque l'accès des textboxs à modifier.
VB:
Private Sub CommandButton3_Click() 'bouton modifier'

    If ComboBox1.Value = "" Then
        MsgBox "Sélectionner un client !!"
        Exit Sub
    Else
    MsgBox ComboBox1.ListIndex 'pour verification, à mettre en commentaire'
With Sheets("Clients")
    lig = ComboBox1.ListIndex + 7 'ComboBox1.ListIndex renvoie 0 pour la ligne se trouvant en ligne 7, on ajoute donc 7
    .Range("A" & lig + 2).Value = TextBox1.Value
    .Range("B" & lig + 2).Value = TextBox2.Value
    .Range("C" & lig + 2).Value = TextBox3.Value
    .Range("D" & lig + 2).Value = TextBox4.Value
    .Range("E" & lig + 2).Value = TextBox5.Value
    .Range("F" & lig + 2).Value = TextBox6.Value
    .Range("G" & lig + 2).Value = TextBox7.Value
    .Range("H" & lig + 2).Value = TextBox53.Value
    .Range("I" & lig + 2).Value = TextBox54.Value
    .Range("J" & lig + 2).Value = TextBox55.Value
    .Range("K" & lig + 2).Value = TextBox56.Value
    .Range("L" & lig + 2).Value = TextBox57.Value
    .Range("M" & lig + 2).Value = TextBox58.Value
    .Range("N" & lig + 2).Value = TextBox59.Value
    .Range("O" & lig + 2).Value = TextBox60.Value
    .Range("P" & lig + 2).Value = TextBox61.Value
    .Range("Q" & lig + 2).Value = TextBox62.Value
    .Range("R" & lig + 2).Value = TextBox63.Value
    .Range("S" & lig + 2).Value = TextBox64.Value
    .Range("T" & lig + 2).Value = TextBox65.Value
    .Range("U" & lig + 2).Value = TextBox66.Value
    .Range("V" & lig + 2).Value = TextBox67.Value
    .Range("W" & lig + 2).Value = TextBox68.Value
  End With
    End If
End Sub

Bonne journée.
 

murainesouspatate

XLDnaute Occasionnel
hé bien je ne peux dire que formidable je viens de remettre remettre les bons textbox ,par contre je ne sais pas comment on les débloque pour modifier les contenus ! désolé !
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…