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

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

  • Essai.xlsm
    16.5 KB · Affichages: 41

bbb38

XLDnaute Accro
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

  • Essai-2.xlsm
    27.5 KB · Affichages: 38

Dranreb

XLDnaute Barbatruc
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
 

donpopo

XLDnaute Occasionnel
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

  • Exemple.xlsm
    18.7 KB · Affichages: 23

bbb38

XLDnaute Accro
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

  • Exemple_v1.xlsm
    32.7 KB · Affichages: 31

donpopo

XLDnaute Occasionnel
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
 

donpopo

XLDnaute Occasionnel
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

  • COMPTES-TITRES - Copie.xlsm
    4.7 MB · Affichages: 48

bbb38

XLDnaute Accro
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

  • COMPTES-TITRES - Copie - 2.xlsm
    4.7 MB · Affichages: 25

donpopo

XLDnaute Occasionnel
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
 

donpopo

XLDnaute Occasionnel
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
 

bbb38

XLDnaute Accro
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.
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?
Les cellules de ces lignes ne sont pas vides, car elles contiennent des formules.
Cordialement,
Bernard
 

Pièces jointes

  • COMPTES-TITRES - Copie - 4.xlsm
    4.7 MB · Affichages: 29

donpopo

XLDnaute Occasionnel
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
 

Discussions similaires

Statistiques des forums

Discussions
312 099
Messages
2 085 285
Membres
102 850
dernier inscrit
iqi