VBA : adapter un userform à plusieurs feuilles

VBA : adapter un userform à plusieurs feuilles - VB/VBA/VBS - Programmation

Marsh Posté le 19-09-2017 à 23:33:55    

Bonjour à tous,
 
Je suis débutante en VBA, j'ai commencé ce week-end en reprenant un formulaire réalisé par une ancienne collègue pour le faire évoluer.
 
Voilà mon problème : j'ai un fichier Excel utilisé par 20 collaborateurs. Je souhaiterais qu'ils aient chacun une feuille à leur nom, qu'ils utilisent tous le même userform accessible via un bouton présent sur leur feuille attitrée, et que les données saisies par chacun soient enregistrées sur la feuille correspondante.
A l'heure actuelle, mon fichier fonctionne parfaitement pour la feuille1, mais dès que je duplique cette feuille, évidemment tout se gâte puisque l'userform est paramétré pour remplir la feuille1 et non la feuille2.
 
J'ai trouvé le forum suivant, répondant à la même problématique : http://forum.hardware.fr/hfr/Progr [...] 4469_1.htm.
 
Du coup, j'ai testé la solution proposée pour une de mes textbox, et ça fonctionne ! A savoir :
 
Private Sub UserForm_Initialize()
TextBox2 = Sheets(ActiveSheet.Name).Cells(5, 2)
End Sub
 
Private Sub TextBox2_Change()
Sheets(ActiveSheet.Name).Cells(5, 2) = TextBox2
End Sub

 
Super, sauf que c'est hélas loin d'être suffisant !
 
1. Que dois-je faire pour toutes les autres textbox et listbox ?? Il n'est pas possible de faire plusieurs UserForm_Initialize. Si j'essaie de mettre autre chose dans UserForm_Initialize (comme par exemple : TextBox3 = Sheets(ActiveSheet.Name).Cells(5, 4)), le formulaire ne se lance plus. Et si je mets d'autres Private Sub TextBox_Change(), le formulaire se lance mais débloque complètement (change les formats de données, ne tient pas compte des données saisies, etc.). Comment faire en sorte que toutes mes données soient récupérées sur la feuille active ?
 
2. Comme dans le post lié ci-dessus, mon userform activé depuis la feuille2 ne se vide pas après emploi (alors qu'il le fait parfaitement sur la feuille 1). Lorsque je le ferme, il conserve un reliquat de données sur la feuille1, alors même que j'avais utilisé la feuille2. Est-ce que cela vient des codes de ma collègue sur les Commandbutton, que je n'ose pas trop toucher ?
 
Pouvez-vous regarder mon fichier et m'expliquer ce qui cloche afin que je puisse le corriger ? En sachant que je n'ai que jusqu'au 28 septembre pour déployer ce nouveau fichier, et que je suis une débutante... alors je vous remercie d'avance pour des explications simples et détaillées, parce que cela fait 4 jours que je m'arrache les cheveux sur des forums d'experts qui sont bien trop complexes pour mon piètre niveau.
 
MERCI MILLE FOIS D'AVANCE

Reply

Marsh Posté le 19-09-2017 à 23:33:55   

Reply

Marsh Posté le 21-09-2017 à 20:56:57    

Bonjour,
 
Moi j'aurai mis déjà essayé un truc comme ça :
 
Private Sub UserForm_Initialize()
TextBox2.Text = ActiveSheet.Cells(5, 2).Value
End Sub
 
Private Sub TextBox2_Change()
ActiveSheet.Cells(5, 2) = TextBox2.Text
End Sub
 
Private Sub CommandButton1_Click()
Date_jour
With ActiveSheet
    .Range("A5" ) = "AOUCHICHE Farida"
    .Rows(5).Copy
    .Rows(6).Insert Shift:=xlDown
    .Rows(5).ClearContents
End With
         
ActiveWorkbook.Save
Unload Me
UserForm1.Show
 
End Sub
 
Sub Date_jour()
    ActiveSheet.Range("C5" ) = ActiveSheet.Range("E2" ).Value
End Sub
 
Petite question tu veux toujours le plus récent en début de liste ??


Message édité par master1551 le 21-09-2017 à 21:01:10

---------------
https://500px.com/3enzam1n
Reply

Marsh Posté le 22-09-2017 à 08:49:42    

Déjà merci pour ta réponse, je commençais à désespérer et ma chef me mets une pression d'enfer.
Je vais regarder ce que tu proposes ce week-end !
 
Le code du bouton Enregistrer vient de ma précédente collègue, je n'y ai pas retouché pour l'instant car c'est plutôt pratique d'avoir les derniers dossiers saisis en début de liste, mais si cela cause problème, je ne vois aucun inconvénient à enregistrer toujours sur la dernière ligne non vide. Pourquoi ? Cela pourrait corriger le problème de partage lorsque plusieurs utilisateurs enregistrent en même temps ?

Reply

Marsh Posté le 22-09-2017 à 10:04:09    

 
            Bonjour,
 
            vite fait en passant :
 
            Sheets(ActiveSheet.Name)  est vraiment inutile car cela correspond juste à  ActiveSheet  ‼
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed