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

Copier données d'une ligne Excel vers un formulaire

  • Initiateur de la discussion Initiateur de la discussion donpopo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

donpopo

XLDnaute Occasionnel
Bonjour le forum,

J'ai parcouru plusieurs fois le forum sans trouver réelle réponse à ma question. Je pense que je n'emploie peut-être pas les les bons mots-clés.

Je gère quelques comptes titres de la famille (assez succintement). J'ai donc une feuille Excel par compte-titres avec un placement par ligne (nom, valeur achat , valeur actuelle et paiement d'intérêts,...)

J'essaie de remplir un formulaire qui reprendrait différentes informations de la ligne sur laquelle j'aurais cliqué.
Si je clique sur une cellule précise d'une ligne, le formulaire s'ouvrirait avec les données de cette ligne.

Pour essayer d'être plus clair, j'ai créé un petit fichier Excel avec quelques données et un formulaire assez simpliste sur lequel je voudrais transférer les données.

En vous remerciant d'avance,
Donpopo
 

Pièces jointes

Bonsoir donpopo, fanfan38, le forum,
Une autre version, avec un simple clic sur une cellule de la colonne A.
Avec le fichier de fanfan38, que je salue, tu peux effectuer un double-clic sur l’ensemble de la feuille.
Cordialement,
Bernard
 

Pièces jointes

Bosoir.
Personnellement je n'aime pas trop modifier des contrôles d'un UserForm depuis une procédure extérieure à celui ci.
Je préfère écrire une méthode dans celui ci :
VB:
Public Sub Afficher(ByVal RngTit As Range, ByVal RngDon As Range)
Dim T(), C&
T = RngTit.Value
For C = 5 To UBound(T, 2): Me("TextBox" & C - 1).Text = T(1, C): Next C
T = RngDon.Value
TextBox1.Text = T(1, 2)
TextBox2.Text = T(1, 3)
TextBox3.Text = Format(T(1, 4), "0.00 €")
For C = 5 To UBound(T, 2): Me("TextBox" & C + 4).Text = Format(T(1, C), "0.00"): Next C
Me.Show
End Sub
Et l'invoquer dans la Worksheet_Change :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect([A2:A10000], UsedRange, Target) Is Nothing Then Exit Sub
UserForm1.Afficher [A3:I3], Target.Resize(, 9)
End Sub
 
Bonjour tout le monde,
Personnellement, j'aime assez la méthode de bbb38; car si on clique n'importe où sur la ligne, cela peut poser problème car dans certaines cases j'ai des liens hypertexte.
Par ailleurs, dans la précipitation de créer mon fichier d'exemple en Excel, j'ai omis un gros détail:
Je souhaiterais en fait faire apparaitre uniquement les dix dernières valeurs encodées. De plus, je peux avoir aussi des cases vides au début de la ligne, car les titres ne sont pas tous achetés à la même date et certains sont terminés plus tôt que d'autres.
J'ai retravaillé mon exemple pour être plus clair avec la méthode de bbb38.
Je me doute que la procédure est plus compliquée, mais je n'ai pas encore assez de connaissance en VBA. Pourtant, je lis, je lis!
Si vous pouviez m'aider?
Merci d'avance,
Donpopo
 

Pièces jointes

Bonsoir donpopo, fanfan38, Dranreb, le forum,
Je me suis permis de rectifier le formulaire, mais si tu préfères, on peut mettre les dates et les montants sur une ligne horizontale. Je vais rectifier le « Target, Range(‘’A :A’’) » par la plage de cellules.
Cordialement,
Bernard
 

Pièces jointes

Bonjour bbb38, fanfan38, Dranreb et tout le monde,
Merci bbb38 pour cette mise en place de formulaire. La mise en forme de celui-ci me convient parfaitement. Cela est plus clair. Je vais essayer de la comprendre et la transposer dans mon programme.
Sincèrement,
Georges
 
Rebonjour bbb38,
j'ai vainement essayé de transposer ce formulaire dans mon programme. J'avais modifié la zone de sélection de 'A:A' en 'B:B'; pas de problème Mais je m’emmêle les pinceaux avec les textbox. En effet, je ne comprends pas très bien le système pour passer d'un textbox à un autre. Dès lors, mes données n'apparaissaient pas dans les bons textbox. Le reste de la programmation, je la comprends.
J'ai donc fait une copie de mon programme et passé mon temps à mettre des données fictives.
Tu verras que le formulaire dont j'ai fait une légère esquisse concerne la feuille "INTERETS".
Une seule chose, ne clique pas sur AIDE; le fichier n'est pas joint.
Si tu pouvait m'aider,
Georges
 

Pièces jointes

Bonjour Georges, le forum,
Corrections effectuées pour la feuille « Intérêts ». Pour passer d’un TextBox à un autre, j’utilise la variable « j » à laquelle j’ajoute la différence entre le no. du TextBox et valeur initiale de « j ».
Pour éviter de cliquer sur une ligne vide, j’essaierai de créer une colonne supplémentaire pour supprimer cet inconvénient.
Cordialement,
Bernard
 

Pièces jointes

Bonjour Bernard et tout le monde,
Cela fonctionne parfaitement comme je l'espérais.
Un seul petit bémol; lorsque je clique sur le bouton 'Intérêts' de la page d'accueil, la feuille intérêts s'ouvre bien, mais un formulaire vierge s'ouvre automatiquement en même temps. Y a t'il une solution à cela?
En même temps, j'ai libéré le reste de la formule qui m'ouvre une MsgBox lorsqu'il n'y a pas de valeur sur cette ligne. Pratique.
Sincèrement,
Georges
 
Petite demande,
tu me mets le code:
If ActiveSheet.Cells(xlgn, 4) = "" Then
MsgBox "Aucun Compte-titres ne figure sur cette ligne."
Exit Sub

Mais certaines lignes vides affichent tout de même le formulaire! Pourtant, si je comprend bien, lorsque la colonne 4 de la ligne sélectionnée est vide, pas d'affichage du formulaire?
Pourquoi alors ces lignes vides actionnent-elles le formulaire?
Bien à toi,
Georges
 
Bonjour Georges, le forum,
Un seul petit bémol; lorsque je clique sur le bouton 'Intérêts' de la page d'accueil, la feuille intérêts s'ouvre bien, mais un formulaire vierge s'ouvre automatiquement en même temps. Y a t'il une solution à cela?
Correction effectuée.
En même temps, j'ai libéré le reste de la formule qui m'ouvre une MsgBox lorsqu'il n'y a pas de valeur sur cette ligne. Pratique.
Sur cette version, tu peux laisser les formules. Le formulaire n’apparait pas si la date d’achat du compte –titres ne figure pas dans la colonne.
tu me mets le code:
If ActiveSheet.Cells(xlgn, 4) = "" Then
MsgBox "Aucun Compte-titres ne figure sur cette ligne."
Exit Sub

Ces lignes de codes étaient sous forme de commentaires (donc ignorées), et s’affichent par défaut en vert.
Les cellules de ces lignes ne sont pas vides, car elles contiennent des formules.
Cordialement,
Bernard
 

Pièces jointes

Bonjour Bernard et le forum,

Merci pour ce travail.
Je viens de le tester. Tout fonctionne, sauf:
par curiosité, j'ai ajouté des valeurs à un poste de titres afin qu'il y en ait plus de 10.
Là, alors, cela bloque :

'Erreur d'exécution - objet spécifié introuvable'
La ligne: UserForm1.Controls("TextBox" + CStr(j + 10)).Text = ActiveSheet.Cells(3, i).Value est surlignée en jaune.

Lorsque je retire ces valeurs ajoutées et n'en laisse que 7, cela fonctionne à nouveau! Au-dessus de 7, erreur.
Que peut-il se passer?
Sincèrement,
Georges
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…