Enregistrer les données Textbox d'un Userform dans une feuille Excel

tyler

XLDnaute Nouveau
Bonjour,

Je souhaite créer un Userform avec une suite de Textbox à remplir (jusque là rien de compliquer).
Mon problème est que je souhaite enregistrer les informations mises dans ces textbox à part (une autre feuille du même classeur, ou idéalement un nouveau classeur Excel).

Idéalement, je souhaite conserver la même mise en forme du Userform vers le classeur excel.
Sinon, au moins transférer les données dans des cellules sans mise en forme.

Pouvez-vous me dire si c'est possible, et si oui, comment faire svp ?

Merci beaucoup.
 

Papou-net

XLDnaute Barbatruc
Re : Enregistrer les données Textbox d'un Userform dans une feuille Excel

Bonjour tyler,

Pouvez-vous me dire si c'est possible, et si oui, comment faire svp ?

Bien sûr que c'est possible.

L'idéal serait de conserver les noms des TextBox par défaut, et d'utiliser leur numéro au sein d'une boucle pour reporter leurs valeurs dans les cellules de la feuille. Une petite astuce: faire correspondre la numérotation des TextBox au numéro de la colonne correspondante pour faciliter les choses.

Voir ébauche de solution sur le fichier ci-joint.

Cordialement.
 

Pièces jointes

  • Exemple tyler.xlsm
    21.1 KB · Affichages: 424

tyler

XLDnaute Nouveau
Re : Enregistrer les données Textbox d'un Userform dans une feuille Excel

Merci Papou-net !
Je suis très content de voir que c'est possible et même simple à y croire.

J'ai 2 questions du coup :
1) peut-on renvoyer vers des lignes plutôt que des colonnes ?
2) peut-on conserver la même mise en forme que le formulaire sur la feuille 2 ?

Encore merci !
 

Papou-net

XLDnaute Barbatruc
Re : Enregistrer les données Textbox d'un Userform dans une feuille Excel

Bonsoir tyler,

Oui ça aussi c'est possible: il suffit de permuter les références de coordonnées des cellules.

Voici donc une version modifiée de ton fichier.

Cordialement.
 

Pièces jointes

  • Exemple tyler-1.xlsm
    20.8 KB · Affichages: 291

tyler

XLDnaute Nouveau
Re : Enregistrer les données Textbox d'un Userform dans une feuille Excel

C'est impécable Papou-net !

Alors dans ce formulaire je souhaite que la personne puisse aller chercher 2 photos et les afficher sur le formulaire (afin ensuite que ces photos soient reportées sur la Feuille 2 (comme les données qu'on rempli dans le formulaire).

Pour ce faire, je m'entraîne sur un Userform à part histoire de maîtriser le fait d'aller chercher une photo en ouvran l'explorateur, puis l'afficher sur une zone de "preview". Je te joints le fichier.

Le problème, c'est que je sélectionne la photo, elle n’apparaît pas dans le cadre.
Peux-tu m'aider stp ? Merci !
 

Pièces jointes

  • Nouveau Feuille Microsoft Office Excel.xlsm
    19.1 KB · Affichages: 83
  • Nouveau Feuille Microsoft Office Excel.xlsm
    19.1 KB · Affichages: 83
  • Nouveau Feuille Microsoft Office Excel.xlsm
    19.1 KB · Affichages: 99

Papou-net

XLDnaute Barbatruc
Re : Enregistrer les données Textbox d'un Userform dans une feuille Excel

Bonsoir tyler,

Avec ce code, tu devrais pouvoir afficher une image *.jpg dans ta zone d'image:

Code:
Private Sub Browse1_Click()
Dim img As Variant

img = Application.GetOpenFilename("image(*.jpg),*.jpg")
If img = False Then Exit Sub

With Me.Image1
  .Picture = LoadPicture(img)
  .PictureSizeMode = fmPictureSizeModeZoom
End With

End Sub

Bien sûr, tu peux ajouter ou modifier les extensions de fichiers selon ton gré.

Espérant avoir répondu.

Cordialement.
 

Pièces jointes

  • Nouveau Feuille Microsoft Office Excel.xlsm
    17.8 KB · Affichages: 73
  • Nouveau Feuille Microsoft Office Excel.xlsm
    17.8 KB · Affichages: 83
  • Nouveau Feuille Microsoft Office Excel.xlsm
    17.8 KB · Affichages: 97

Regueiro

XLDnaute Impliqué
Re : Enregistrer les données Textbox d'un Userform dans une feuille Excel

Bonsoir Le Forum, tyler, Papou-net
Code à adapter
Code:
Private Sub Browse1_Click()
Dim ret As Variant
Dim fltr As String, ttl As String, fileName As String
Dim fltrIndx As Integer
Dim mltiSlct As Boolean
'set value for variables to be used in GetOpenFilename Method
fltr = "Tiff Files(*.tif;*.tiff),*.tif;*.tiff,JPEG Files (*.jpg;*.jpeg;*.jfif;*.jpe),*.jpg;*.jpeg;*.jfif;*.jpe,Bitmap Files(*.bmp),*.bmp"
fltrIndx = 2
ttl = "Select a File"
mltiSlct = False

'ChDrive Statement sets the current drive to C
ChDrive "C"
'ChDir statement sets the current directory to C:\Project_1\NewPictures
ChDir "C:\Users\José\Pictures"

'use GetOpenFilename Method to select picture:
fileName = Application.GetOpenFilename(fltr, fltrIndx, ttl, , mltiSlct)

If fileName <> "False" Then
MsgBox "Vous avez saisie le Fichier " & Dir(fileName)

With Me.Image1
.Picture = LoadPicture(fileName)
End With
Me.Label1.Caption = fileName
Me.Label2.Caption = "Nom du fichier " & Dir(fileName)

Else
MsgBox fileName
Exit Sub
End If
End Sub
A+
 

Pièces jointes

  • XLD_Import image dans USF.xlsm
    22.6 KB · Affichages: 93

tyler

XLDnaute Nouveau
Re : Enregistrer les données Textbox d'un Userform dans une feuille Excel

Bonjour Papou-net, Regueiro,
J'ai activement bossé sur les deux formulaires : j'ai pu réussir à les combiner (voir pièce jointe).
J'y ai même rajouté une deuxième image (car elle est nécessaire pour mon formulaire).
Mon dernier souci consiste juste à transférer ces 2 images choisies vers la Feuille 2 (tout comme on peut le faire pour les Textbox).

Après cela, j'espère ne plus avoir à vous embêter (j'espère aussi que cela va pouvoir aider d'autres personnes) !

Merci pour votre aide !
 

Pièces jointes

  • Nouveau Feuille Microsoft Office Excel7.xlsm
    22.9 KB · Affichages: 56
  • Nouveau Feuille Microsoft Office Excel7.xlsm
    22.9 KB · Affichages: 57
  • Nouveau Feuille Microsoft Office Excel7.xlsm
    22.9 KB · Affichages: 61

Papou-net

XLDnaute Barbatruc
Re : Enregistrer les données Textbox d'un Userform dans une feuille Excel

Bonsoir tyler,

Ci-joint ton fichier modifié.

Tu remarqueras que j'ai compilé le code des 2 boutons Browse dans la procédure Sub BoutonImage(btn As Byte), placée dans Module1. Le n° du bouton (btn) est passé en paramètre à l'appel de la macro. Le chargement des 2 images sur Feuil2 est fait au moyen de la variable-tableau imgf().

Cordialement.
 

Pièces jointes

  • Nouveau Feuille Microsoft Office Excel7.xlsm
    28.5 KB · Affichages: 80
  • Nouveau Feuille Microsoft Office Excel7.xlsm
    28.5 KB · Affichages: 87
  • Nouveau Feuille Microsoft Office Excel7.xlsm
    28.5 KB · Affichages: 105
Dernière édition:

tyler

XLDnaute Nouveau
Re : Enregistrer les données Textbox d'un Userform dans une feuille Excel

C'est étonnant comme ça marche !
Pour le PictureSizeMode, j'ai pu voir qu'on peut utiliser le mode Clip/Zoom/ ou encore Stretch mais Zoom est le meilleur car il agrandit la photo sans distortion.

En revanche, impossible de modifier la taille des containers sur la feuille 2 (j'aimerai les agrandir un peu), j'ai vérifier avec Alt+F11 mais j'ai pu voir aucune façon de les varier. Pareil, en cliquant dessus, impossible d'en changer la taille.
Comment dois-je procéder stp ? Merci encore.
 

Papou-net

XLDnaute Barbatruc
Re : Enregistrer les données Textbox d'un Userform dans une feuille Excel

Bonjour tyler,

Si, tu peux modifier la taille et la position des contrôles Image sur Feuil2.

Exemple pour le bouton 1:

Code:
Private Sub Browse1_Click()
BoutonImage 1
With Feuil2.Image1
  .Left = 10
  .Top = 10
  .Width = 400
  .Height = 400
  .Picture = LoadPicture(imgf(1))
  .PictureSizeMode = fmPictureSizeModeZoom
End With
End Sub

Tu peux bien entendu adapter la valeur de chaque propriété à ta guise, ou bien les ajuster sur celles des images du formulaire:

Code:
Private Sub Browse1_Click()
BoutonImage 1
With Feuil2.Image1
  .Left = 10
  .Top = 10
  .Width = Me.Image1.Width
  .Height = Me.Image1.Height
  .Picture = LoadPicture(imgf(1))
  .PictureSizeMode = fmPictureSizeModeZoom
End With
End Sub

Bon WE.

Cordialement.
 

tyler

XLDnaute Nouveau
Re : Enregistrer les données Textbox d'un Userform dans une feuille Excel

Re-bonjour à tous, (Papou-net, si tu m'entends... à l'aide)

Je reviens car une fois que je clique sur "Save", tout fonctionne bien. SAUF que...

Comme les photos restent chargées dans le classeur contenant le Userform (en Feuille 2), ce dernier pèse plusieurs Mo (il peut même atteindre 100 Mo).

Mon idée est donc de "purifier" les balises sur le classeur contenant le Userform, une fois que le fichier est généré par le bouton "Save" (car quand tout est vide, cela ne pèse qu'1 Mo environs).

Une idée ? Voici le code pour charger l'image dans le Userform:
Code:
Private Sub Browse1_Click()
BoutonImage 1
With Feuil2.Image1
  .Left = 570
  .Top = 10
  .Width = 500
  .Height = 300
  .Picture = LoadPicture(imgf(1))
  .PictureSizeMode = fmPictureSizeModeZoom
End With
End Sub
Puis le code pour charger depuis le Userform vers la Feuille 2 :
Code:
Sub BoutonImage(btn As Byte)
img = Application.GetOpenFilename("image(*.jpg),*.jpg")
If img = False Then Exit Sub
imgf(btn) = img
With UserForm1.Controls("Image" & btn)
  .Picture = LoadPicture(img)
  .PictureSizeMode = fmPictureSizeModeZoom
End With
End Sub
Et enfin le code pour le bouton "Save" :
Code:
Private Sub Save_Click()
Dim Classeur_Source As Workbook, Classeur_Destination As Workbook
Set Classeur_Source = ThisWorkbook 'classeur initial
For tb = 1 To 7
  Feuil2.Cells(tb, 2) = Me.Controls("TextBox" & tb).Value
Next
Dim nom As String
    nom = TextBox1 & " -" & TextBox2 & " -" & TextBox3 & " -" & TextBox4
    Classeur_Source.Sheets(2).Copy
    Set Classeur_Destination = ActiveWorkbook 'ici le classeur de la copie de la feuille
    ActiveWorkbook.SaveCopyAs Classeur_Source.Path & "\" & nom & ".xls" 'qu'on enregistre sous un autre nom
    Classeur_Destination.Close False 'puis que l'on ferme
    rep = MsgBox("File registered as : " & nom, vbYes + vbInformation, "Copie sauvegarde classeur")
    '
'
' MacroRedimension Macro
'

'
    Sheets("CR").Select
    Columns("B:B").ColumnWidth = 79.29
    Columns("B:B").Select
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Range("A1").Select
End Sub

Merci !
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Enregistrer les données Textbox d'un Userform dans une feuille Excel

Bonjour tyler,

Tu veux dire que le fichier fonctionne une fois que tu as remplacé 11 par 7 ? Moi, même en changeant les 11 par 7, je n'y ar
rive pas.

Je viens répondre à ton MP dans ce fil car je ne sais pas comment joindre un fichier dans la messagerie XLDownload.

Effectivement, après avoir modifié l'indice maxi de la boucle, ça fonctionne.

Je te joins une copie pour vérifier chez toi s'il en est de même.

Dans cette attente.

Cordialement.
 

Pièces jointes

  • Copie de Nouveau 35.xlsm
    29.3 KB · Affichages: 132

Discussions similaires

Réponses
8
Affichages
175

Statistiques des forums

Discussions
312 613
Messages
2 090 231
Membres
104 453
dernier inscrit
benjiii88