Ajout texte via userform
Bonjour à tous !
Etant un grand novice de Excel ce forum m'a déjà été d'une considérable aide pour répondre aux différentes questions que j'ai pu me poser, surtout en vba. Je remercie donc l'ensemble de la communauté, ceci n'est mon premier message sur ce forum que grâce à (à cause de ?) la grande qualité des réponses déjà apportées dans des topics précédents.
Mon fichier possède deux aspects : une feuille de données brutes, éditable uniquement par des personnes autorisées, et une feuille de recherche, qui permet d'aller chercher les informations dans cette première, et qui elle sera verrouillée.
Plusieurs personnes utiliseront ce document et le but étant de permettre un certain suivi je souhaiterai autoriser tout le monde à ajouter des entrées dans la colonne "Commentaires" (sans donner accès à la feuille de données).
Pour faire plus simple à chaque entrée est assigné un "numéro ID".
Voilà l'idée que j'ai eu pour mettre cela en place :
1) double cliquez-sur la cellule de la colonne Commentaires (H) où vous souhaitez ajouter le votre, ouvre userform : OK
2) entrez votre texte & initiales via userform : OK
3) validez, la cellule correspondante dans la feuille de données est éditée en conséquence : Pas ok
Il faudrait (et ce que je n'arrive pas à faire) stocker le "numéro ID" de la ligne (col J) où le double-clic a lieu, puis l'utiliser pour déterminer sur quelle ligne se trouve la cellule à éditer (en trouvant la ligne contenant le même nombre en col I de l'autre feuille).
Bien évidemment c'est mon idée de néophyte, si vous avez meilleure je suis, bien entendu, preneur.
Mon (peu utile) "code" actuel :
Private Sub CommandButton1_Click()
If Not IsEmpty(Range("GX")) Then 'pour éviter ligne vide si premier commentaire
a = vbCrLf & Range("GX").Value
End If
Range("GX").Value = TextBox1.Value & " (" & TextBox2.Value & Date & ")" & a
add_comm.Hide
End SubJ'espère avoir réussi à être (relativement) clair,
Bien cordialement,
Cao
Bonjour et bienvenu(e)
Quelques précisions
j'ai double cliqué en H6 --> Ouverture UserformCaoea a écrit :double cliquez-sur la cellule de la colonne Commentaires (H)
A quoi sert l'Id ?
Comment est il déterminé ?
Si tout le monde clique en H6 ça va être le bordel la pagaille
Les initiales sont stockées où ?
Quelles sont les vérifications faites pour éviter de Jojo modifie le commentaire de Paulot ?
Merci beaucoup pour cette réponse.
Banzai64 a écrit :j'ai double cliqué en H6 --> Ouverture Userform
Si tout le monde clique en H6 ça va être
le bordella pagaille
Effectivement, bonne remarque, j'ai réduit le range à H15:H2000.
Banzai64 a écrit :Les initiales sont stockées où ?
Quelles sont les vérifications faites pour éviter de Jojo modifie le commentaire de Paulot ?
Les initiales ne sont stockées nul part (pour le moment), elles sont entrées à la main par l'utilisateur lors de l'ajout de texte via l'userform (TextBox.2).
En principe cela ne peut pas arriver, la page "Data" est (sera) veryhidden et seulement accessible par mot de passe. L'userform ne doit pas permettre d'éditer la case "Commentaires", seulement d'ajouter le sien.
Banzai64 a écrit :A quoi sert l'Id ?
Comment est il déterminé ?
Je me rends compte qu'effectivement je n'ai pas été très clair (mais c'est pas évident !
Mon utilisateur consulte le document et recherche un produit de type "MRE", pour finalement limité la recherche à l'activité "Fer". Il contacte la seule entreprise disponible, traite avec eux puis souhaite laisser un commentaire. Pour cela il double-clic la cellule correspondante (H22 ; ou H15 s'il a fait remonter le résultat). L'userform apparait, il rentre son commentaire et ses initiales. Celui-ci est automatiquement ajouté à la base de données (page Data) au dessus du (des) précédents, qui devient donc :
Nouveau commentaire de l'utilisateur (AA 01/02/2016)
Pas efficaces (DB 3/4/2015)
Pour réussir à faire cela j'ai pensé ajouter un ID unique caché pour chaque entrée. Ainsi en cliquant sur la ligne de cette entreprise de fer le code retiendrait le numéro 24 (ID = Cells(Target.Row, "J").Value ou similaire par exemple ?), qu'il irait ensuite chercher dans la colonne I de la feuille Data pour en déduire la cellule à éditer (Set cel = Cells.Range("I:I").Find(What = ID) puis utiliser cel.row ?) à laquelle il ajouterait le texte (logique du petit code que j'ai mis dans le post original).
En ayant appris sur le tas j'ai quelques notions mais je me perds toujours dans des codes trop compliqués, mal définis et qui ne cessent de retourner des erreurs. Il est donc TRES loin d'être impossible qu'une meilleure alternative soit possible, mais je ne l'ai pas trouvé
J'espère que tout ceci t'es un peu plus clair, merci beaucoup pour le temps passé à me répondre, et à me lire, le cas échéant.
Ci-joint version corrigée.
Cordialement,
Cao
Merci énormément, cela m'aide beaucoup.
Je vais vérifier cela en profondeur mais cela semble marcher parfaitement. Merci de plus pour les petits ajouts (messages d'erreur..).
Cao