UseForm to Feuil

pikameuh

XLDnaute Nouveau
Bonjour à tout les developpeurs,

j'ai commencé le VBA il y à 3 semaines. Je pensais m'en sortir plustôt pas mal, jusqu'à maintenant.

j'ai réalisé un formulaire qui est quasiment finit, mais mon formulaire est un GROS USEFORM! Et maintenant j'ai besoin de l'integré dans une feuille Excel.
(Je viens de réaliser que en temps 'normale' on créer des petits bout dans un formulaire Excel, et non pas un gros formulaire dans un UseForm).

Mais je ne sais pas comment faire, j'ai d'éjà posé la question sur un autre forum, et la personne qui me réponds, et bein je comprends rien à ce qu'il me dit :

il suffit de récupérer les valeurs saisies par des boucles et de poser le tout dans un feuille d'archive.

Je lui ai demmandé plus d'explication, il m'a répondu :

Code:
dim reponse(1 to 89) as variant
p=0                 ' compteur
for t=1 to 27               ' on chpope les valeurs des 27 textbox   
p=p+1                        ' on incrémente le compteur  
reponse(p)=controls("textbox" & t).value
next
for t=1 to 20                ' on chpope les valeurs des 2 checkbox
p=p+1                         ' on oublie pas
reponse(p)=controls("checkbox" & t).value
next
for t=1 to 42                 ' et enfin les optionbutton
p=p+1                          ' là non plus ne pas oublié 
reponse(p)=controls("optionbutton" & t).value
next
 
with sheets(3)
lg=.range("a65535").end(xlup).row+1
.range(cells(lg,1),cells(lg,89).value=reponse
end with

Je lui ai ensuite demmandé si je devait le mettre dans le UseForm, un module ou autre.

le code tu le mets dans l'USF tu selectionnes le bouton clic-droit code la macro sera une private sub lie à l'USF

En réalité, avec ça je ne suis pas plus avancé...
Je suis un peu developpeur (je m'en sort) mais j'y connais pas grand chose aux mécanisme Excel/VBA/UseForm.

Est ce que quelqu'un peu m'aider SVP?

(Ci-joint mon fichier pour une plus emple compréhenssion)
 
Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : UseForm to Feuil

Salut pikameuh et le foruù
petite remarque : pas de devin, ni de télépathe sur ce site.
j'ai commencé le VBA il y à 3 semaines. Je pensais m'en sortir plustôt pas mal, jusqu'à maintenant.
Comme disait celui qui tombait du 20ème étage en passant devant le 3ème ;).
Je viens de réaliser que en temps 'normal' on créer des petits bout dans un formulaire Excel, et non pas un gros formulaire dans un UseForm
Il n'y a pas de règle. Mais les exemples sont toujours sur de petits formulaires. À quoi bon donner le code pour 50 contrôles, si un seul suffit à expliquer ?
Mais je ne sais pas comment faire, j'ai d'éjà posé la question sur un autre forum, et la personne qui me réponds, et bein je comprends rien à ce qu'il me dit :
Pourquoi tu ne le lui dis pas ? Quand en face tu as un gros travail, tu supposes que celui qui le fait connaît les bases.

Tu expliques que tu veux monter un camion, comment peut-on penser que tu n'as jamais monter une roue ?

Ton code, n'a pas de titre, ni d'instruction de clôture, ce n'est qu'un code à intégrer dans une macro.
Dans ton USF, tu as 27 textbox (textbox1, textbox2,... , textbox27) 20 checkbox (checkbox1, ...) et 42 optionbutton (optionbutton1, ...) d'après le code fournis.

Tu dois avoir en plus quelques boutons.
Tu sélectionnes le bouton correspondant au transfert, tu cliques-droit dessus => ce qui fait apparaître le menu contextuel où se trouve "Code" => tu le sélectionnes et tu te retrouves dans le module lié à ton USF, avec une macro du type :
Code:
Private Sub CommandButton1_Click()

End Sub
Elle n'a que le titre et la clôture. C'est là que tu intègres ton code. Ça devient :
Code:
Private Sub CommandButton1_Click()
Dim reponse(1 To 89) As Variant
Dim t As Integer, P As Integer, Lg As Long

P = 0               ' compteur
For t = 1 To 27             ' on chpope les valeurs des 27 textbox
    P = P + 1                    ' on incrémente le compteur
    reponse(P) = Controls("textbox" & t).Value
Next
For t = 1 To 20              ' on chpope les valeurs des 2 checkbox
    P = P + 1                     ' on oublie pas
    reponse(P) = Controls("checkbox" & t).Value
Next
For t = 1 To 42               ' et enfin les optionbutton
    P = P + 1                      ' là non plus ne pas oublié
    reponse(P) = Controls("optionbutton" & t).Value
Next
 
With Sheets(3)
    Lg = .Cells(Rows.Count, "A").End(xlUp).Row + 1
    .Range(Cells(Lg, 1), Cells(Lg, 89)).Value = reponse
End With

End Sub
J'ai rajouté des déclarations, et corrigé un bug : ce n'est qu'un petit code, et son auteur ne l'a même pas testé.

Ce qu'il me dit :
On crée une variable tableau de 89 valeurs.
On la charge avec les renseignements des contrôles.
Sur la feuille en 3ème position dans ton classeur :
On recherche la dernière ligne non vide en A pour coller le tableau, à la ligne suivante, de la colonne 1 à la colonne 89.
Contrairement à ce que tu penses, c'est un petit USF (4 types de contrôle sur une seule page). On en fait de nettement plus conséquent.

En général, quand on a un sujet, on poursuit les questions dans celui-ci : on peut retrouver toutes les données que tu as fourni, ce qui évite des questions auxquelles tu as déjà répondues.

Comme les forums sont anonymes, ne jamais hésiter à poser des questions, pour comprendre. Même si les réponses semblent évidentes, triviales, il vaut mieux se "ridiculiser" sur le forum qu'avec son fichier devant des gens qui te connaissent.

Fucius, qui n'était pas trop con disait, en substance :
Avoir des lacunes n'est pas grave. Ce qui l'est, c'est de ne pas chercher à les combler !
A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 228
Messages
2 086 420
Membres
103 205
dernier inscrit
zch