XL 2019 Userform récapitulant un tableau

AIXELS

XLDnaute Occasionnel
Bonjour à tous les amis du Forum.
Après de nombreuses recherches, je n'arrive pas à trouver le moyen
d'afficher le récap des sommes d'un suivi annuel par userform.
J'ai dessiné le userform avec les données à afficher.
Pouvez-vous me donner un coup de main s'il vous plaît.
La syntaxe pour afficher dans les textbox de la feuille BDD.
Code qui pourra me servir à évoluer.
Je ne vous demande pas de me mâcher le travail, mais de me
donner des pistes de solutions.

Dans l'attente de votre aide.
Bien cordialement. :)
 

Pièces jointes

  • TEST_RECAP.xlsm
    53.5 KB · Affichages: 39

Phil69970

XLDnaute Barbatruc
Bonjour @AIXELS

C'est une excellente méthode
Je ne vous demande pas de me mâcher le travail, mais de me
donner des pistes de solutions.
Donc perso je renommerais mes textbox :

Par exemple :
Pour les heures :
TextBox78 ==> TextBoxH1....TextBoxH12
Pour Somme1 :
TextBox90 ==> TextBoxA1 ....TextBoxA12
Pour Somme2 :
TextBox102 ==> TextBoxB1 ....TextBoxB12
Pour Somme3 :
TextBox114 ==> TextBoxC1 ....TextBoxC12

Pourquoi et bien pour savoir qui est qui car TextBox107 je sais pas ce que c'est et je ne sais pas à quoi il correspond mais TextBoxB9 je sais tout de suite que c'est le 9eme de la somme2 donc septembre.

De plus on peut faire une boucle sur les TextBox de ce genre
VB:
For i = 1 To 12
    Me.Controls("TextBoxA" & i).value = Worksheets("BDD").Range("AI" & i + 4)
Next i
Ce qui permet de les remplir très rapidement....

@Phil69970
 

Phil69970

XLDnaute Barbatruc
Re

Maintenant que ton UserForm est ouvert et il faut le remplir mais que veux tu en faire ?
C'est d'ailleurs la 1ere réflexion que tu aurais du avoir en clair c'est pourquoi faire ?
Tu dois te faire un cahier des charges je fais quoi et je veux trouver quoi etc.....
----------------------------------------------------------------------------------------------

A l’ouverture de ton userform il faut remplir les données
*Mais avant il faut supprimer les valeur que tu as mis "en dur"
1616411700176.png


VB:
Private Sub UserForm_Initialize()
For i = 1 To 12
    Me.Controls("TextBoxH" & i).Value = Worksheets("BDD").Range("AH" & i + 4) 'Heure
    Me.Controls("TextBoxA" & i).Value = Worksheets("BDD").Range("AI" & i + 4) 'Somme1
    Me.Controls("TextBoxB" & i).Value = Worksheets("BDD").Range("AJ" & i + 4) 'Somme2
    Me.Controls("TextBoxC" & i).Value = Worksheets("BDD").Range("AL" & i + 4) 'Somme3
Next i
End Sub
Et en plus court
VB:
Private Sub UserForm_Initialize()
With Worksheets("BDD")
    For i = 1 To 12
        Me.Controls("TextBoxH" & i).Value = .Range("AH" & i + 4) 'Heure
        Me.Controls("TextBoxA" & i).Value = .Range("AI" & i + 4) 'Somme1
        Me.Controls("TextBoxB" & i).Value = .Range("AJ" & i + 4) 'Somme2
        Me.Controls("TextBoxC" & i).Value = .Range("AL" & i + 4) 'Somme3
    Next i
End With
End Sub

Maintenant que ton UserForm est remplit que veux tu en faire ?
Cela te sert à quoi ....

@Phil69970
 
Dernière édition:

AIXELS

XLDnaute Occasionnel
Re

Maintenant que ton UserForm est ouvert et il faut le remplir mais que veux tu en faire ?
C'est d'ailleurs la 1ere réflexion que tu aurais du avoir en clair c'est pourquoi faire ?
Tu dois te faire un cahier des charges je fais quoi et je veux trouver quoi etc.....
----------------------------------------------------------------------------------------------

A l’ouverture de ton userform il faut remplir les données
*Mais avant il faut supprimer les valeur que tu as mis "en dur"
Regarde la pièce jointe 1099570

VB:
Private Sub UserForm_Initialize()
For i = 1 To 12
    Me.Controls("TextBoxH" & i).Value = Worksheets("BDD").Range("AH" & i + 4) 'Heure
    Me.Controls("TextBoxA" & i).Value = Worksheets("BDD").Range("AI" & i + 4) 'Somme1
    Me.Controls("TextBoxB" & i).Value = Worksheets("BDD").Range("AJ" & i + 4) 'Somme2
    Me.Controls("TextBoxC" & i).Value = Worksheets("BDD").Range("AL" & i + 4) 'Somme3
Next i
End Sub
Et en plus court
VB:
Private Sub UserForm_Initialize()
With Worksheets("BDD")
    For i = 1 To 12
        Me.Controls("TextBoxH" & i).Value = .Range("AH" & i + 4) 'Heure
        Me.Controls("TextBoxA" & i).Value = .Range("AI" & i + 4) 'Somme1
        Me.Controls("TextBoxB" & i).Value = .Range("AJ" & i + 4) 'Somme2
        Me.Controls("TextBoxC" & i).Value = .Range("AL" & i + 4) 'Somme3
    Next i
End With
End Sub

Maintenant que ton UserForm est remplit que veux tu en faire ?
Cela te sert à quoi ....

@Phil69970
 

AIXELS

XLDnaute Occasionnel
Bonjour @Phil69970 Merci pour ta réponse.
J'ai modifié les différents textbox et ajouté ton code.
Mai j'ai un message d'erreur, je ne sais pas à quoi il correspond.
J'ai été obligé de neutraliser Option Explicit : "Variable non définie"
Je te joint le fichier V2.
Bien cordialement. :)
 

Pièces jointes

  • Message d'erreur.gif
    Message d'erreur.gif
    81.6 KB · Affichages: 12
  • TEST_RECAP_V2.xlsm
    54.8 KB · Affichages: 11

ChTi160

XLDnaute Barbatruc
Bonjour AIXELS

Bonjour le Fil (Phil69970) , le Forum
j'ai constaté mais est ce important ?
Que les Données affichées en dures si elles sont bien celles qui doivent être affichées ne correspondent pas toutes aux Libellés.
On a en Libellés du Userform Heure , Somme1 ,Somme2 , Somme3

Et les chiffres affichés en exemple correspondent à Heure , Somme1 , Somme3 et Reste dû .

Qu’en est il donc ?
Cordialement

jean marie
 

Phil69970

XLDnaute Barbatruc
@AIXELS, @ChTi160

J'ai modifié les différents textbox
Non tu les as pas modifié mais tu en as crées des nouveaux ET tu as gardé les anciens !
Les Textbox se superposent ...
Donc il faut virer tous les TextBox superflux

1616423138805.png

Tu as un pb sur les 2ere lignes je regarde pourquoi
mais cela fonctionne déjà mais tes données risque d'être cachées par les Textbox qui se superposent
VB:
Private Sub UserForm_Initialize()
    With Worksheets("BDD")
        For i = 1 To 12
           ' Me.Controls("TextBoxH" & i).Value = .Range("A?" & i + 4) 'Heure
           ' Me.Controls("TextBoxA" & i).Value = .Range("AI" & i + 4) 'Somme1
            Me.Controls("TextBoxB" & i).Value = .Range("AJ" & i + 4) 'Somme2
            Me.Controls("TextBoxC" & i).Value = .Range("AL" & i + 4) 'Somme3
        Next i
    End With
End Sub

@Phil69970
 

Phil69970

XLDnaute Barbatruc
Re le fil

Ceci est toujours d'actualité !

Maintenant que ton UserForm est ouvert et il faut le remplir mais que veux tu en faire ?
C'est d'ailleurs la 1ere réflexion que tu aurais du avoir en clair c'est pourquoi faire ?
Tu dois te faire un cahier des charges je fais quoi et je veux trouver quoi etc.....
1616424414649.png

Il ne faut pas mettre des textbox mais des label
de même ici

1616424493259.png

@Phil69970
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
il a du y avoir une copie de Certains controls ce qui fait qu'effectivement j'ai aussi du supprimer pas mal de TextBox et en plus le TextBox A12 n'existait pas Lol
pense a modifier ton Userform
qu'en est il des Colonnes a prendre en compte ?
jean marie
 
Dernière édition:

AIXELS

XLDnaute Occasionnel
Bonsoir, Merci pour ce cours magistral.
J'aurai appris beaucoup de choses.
Une toute dernière question j'ai le total des heures, mais il est faux.
VB:
Me.Controls("TextBoxTotH").Value = Format(Range("AH17"), "hh:mm") 'Heure
J'ai mis entre crochets comme sur Excel, mais il me trouve 11:30. Quel format pour les heures ?
Merci pour votre aide.
Bien cordialement. :)
 

Discussions similaires

Réponses
93
Affichages
2 K
Réponses
16
Affichages
455