VBA : adapter un userform à plusieurs feuilles - VB/VBA/VBS - Programmation
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 ??
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 ?
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 ‼
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