UserForm remplissage automatique tableau

Tibo62

XLDnaute Occasionnel
Bonjour au forum,

J'ai besoin d'une petite aide, je souhaite remplir un tableau en fonction des données d'entrée d'un UserForm, j'ai bien créer le UserForm, j'ai mis quelques codes qui fonctionne.
Mais pas contre je ne sais pa comment créer un boucle pour remplir automatiquement mon tableau.
Si quelqu'un pouvez m'aider ce serait super.

Je vous joins un fichier exemple pour que ce soit plus simple à comprendre.

Il y a également dans ce fichier un début de code qui fonctionne mais qui n'est absolument pas optimiser (utilisation d'activecell je sais ce n'est pas bien).
De plus vu le nombre de colonnes à remplir je vais mettre un temps fou pour la finir.

Je suis bien sur à disposition pour échanger et que l'on puisse faire fonctionner mon fichier.

Merci beaucoup

Cordialement
Thibaut
 

Pièces jointes

  • excel download.xlsm
    16.3 KB · Affichages: 48
  • excel download.xlsm
    16.3 KB · Affichages: 51

Robert

XLDnaute Barbatruc
Repose en paix
Re : UserForm remplissage automatique tableau

Bonjour Tibo, bonjour le forum,

Essaie le code ci-dessous mais avant il te faudra :
• Sélectionner tes TextBoxes une par une
• définir la Propriété [Tag] de chacune en mettant la valeur qui correspond à la colonne à laquelle elle correspond. Par exemple : propriété [Tag] de la TextBox1 = 3 signifie que la valeur de la Textbox1 sera renvoyée dans la colonne 3 (=C)...
Code:
Private O1 As Worksheet 'déclare la variable O1 (Onglet 1)
Private O3 As Worksheet 'déclare la variable O1 (Onglet 3)

Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Set O1 = Sheets("Feuil1") 'définit l'onglet O1
Set O3 = Sheets("Feuil3") 'définit l'onglet O3
O1.Select 'sélectionne l'onglet O3
End Sub

Private Sub Vérification_Click() 'bouton "Vérification"
Dim rPlage As Range, rCell As Range

O3.Range("WW1").Value = Me.TextBox1.Value
Set rPlage = O1.Range("C:C")
Set rCell = rPlage.Find(Me.TextBox1.Value, , LookIn:=xlValues, lookat:=xlWhole)
If rCell Is Nothing Then
    MsgBox "Ce nom n'existe pas."
    Unload UserForm3
End If
End Sub

Private Sub CommandButton1_Click() 'bouton "Valider"
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim CTRL As Control 'déclare la variable CTRL (ConTRôLe)

DL = O1.cell(Application.Rows.Count, 3).End(xlUp).Offset(1, 0).Select 'définit la dernière ligne éditée de la colonne 3 (=C)
For Each CTRL In Me.Controls 'boucle sur tous les contrôles CTRl de l'UserForm
    If TypeOf CTRL Is MSForms.TextBox Then 'condition : si les contrôle est une TextBox
        O1.Cells(LI, CInt(CTRL.Tag)).Value = CTRL.Value 'renvoie la valeur du contrôle dans la ligne = DL, colonne = Valeur de sa propriété [Tag] convertie en entier de l'onglet O1
    End If 'fin de la condition
Next CTRL 'prochaine contrôle de la boucle
End Sub
 

Tibo62

XLDnaute Occasionnel
Re : UserForm remplissage automatique tableau

BOnjour Robert, merci pour ta réponse
J'ai donc essayé ce que tu m'as envoyé en remplissant les TAG de chaque TEXTBOX, par contre j'ai un petit bug sur cette ligne :

Code:
DL = O1.cell(Application.Rows.Count, 3).End(xlUp).Offset(1, 0).Select

Il me dit membre de méthode ou de données introuvable.

Merci pour ton aide

Cordialement
Thibaut
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : UserForm remplissage automatique tableau

Re,

Pardon, c'est ma faute ! Il manque un s à cell... Remplace la ligne par :


Code:
DL = O1.Cells(Application.Rows.Count, 3).End(xlUp).Offset(1, 0).Select
 

Tibo62

XLDnaute Occasionnel
Re : UserForm remplissage automatique tableau

Merci Robert maintenant j'ai un petit bug sur cette ligne :

Code:
 O1.Cells(LI, CInt(CTRL.Tag)).Value = CTRL.Value 'renvoie la valeur du contrôle dans la ligne = DL, colonne = Valeur de sa propriété [Tag] convertie en entier de l'onglet O1

Il me dit incompatibilité de type.


merci
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : UserForm remplissage automatique tableau

Re,

Pourrais-tu renvoyer le fichier avec le code et les propriétés [Tag] des TextBoxes...

[Édition]
Ooops ! Je pense que j'ai remplacé la variale DL par LI. Corrige...
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : UserForm remplissage automatique tableau

Re,

J'ai corrigé l'erreur de la variable DL/LI dans le code ci-dessous. Mais tant que tu n'auras pas mis la propriété [Tag] de chaque TextBox de ton Userform correspondant à la colonne où sa valeur va être renvoyée, le code ne fonctionnera pas.
Et j'ajoute que je ne le ferai pas pour toi. Si tu as la flemme, moi encore plus...


Code:
Private O1 As Worksheet 'déclare la variable O1 (Onglet 1)
Private O3 As Worksheet 'déclare la variable O1 (Onglet 3)
 
Private Sub CommandButton1_Click()
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim CTRL As Control 'déclare la variable CTRL (ConTRôLe)
 
DL = O1.Cells(Application.Rows.Count, 3).End(xlUp).Offset(1, 0).Select 'définit la dernière ligne éditée de la colonne 3 (=C)
For Each CTRL In Me.Controls 'boucle sur tous les contrôles CTRl de l'UserForm
    If TypeOf CTRL Is MSForms.TextBox Then 'condition : si les contrôle est une TextBox
        O1.Cells(DL, CInt(CTRL.Tag)).Value = CTRL.Value 'renvoie la valeur du contrôle dans la ligne = DL, colonne = Valeur de sa propriété [Tag] convertie en entier de l'onglet O1
    End If 'fin de la condition
Next CTRL 'prochaine contrôle de la boucle
End Sub

 
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Set O1 = Sheets("Feuil1") 'définit l'onglet O1
Set O3 = Sheets("Feuil3") 'définit l'onglet O3
O1.Select 'sélectionne l'onglet O3
End Sub
 
Private Sub Vérification_Click() 'bouton "Vérification"
Dim rPlage As Range, rCell As Range

O3.Range("WW1").Value = Me.TextBox1.Value
Set rPlage = O1.Range("C:C")
Set rCell = rPlage.Find(Me.TextBox1.Value, , LookIn:=xlValues, lookat:=xlWhole)
If rCell Is Nothing Then
    MsgBox "Ce nom n'existe pas."
    Unload UserForm3
End If
End Sub
 

Tibo62

XLDnaute Occasionnel
Re : UserForm remplissage automatique tableau

Merci Robert pour ce code je vais l'essayer, par contre je ne comprens pas il me semble avoir mis la valeur dans chaque TAG comme sur l'exemple que je t'envoi.
Ce n'est pas à cet endroit que je dois le mettre ?

Merci encore pour ton aide
 

Pièces jointes

  • tag.jpg
    tag.jpg
    34.7 KB · Affichages: 50
  • tag.jpg
    tag.jpg
    34.7 KB · Affichages: 48

Tibo62

XLDnaute Occasionnel
Re : UserForm remplissage automatique tableau

Désolé Robert je n'avais pas vu le problème sur les 4 premières TEXTBOX quel idiot je comptais les renseignez differemment mais c'est bon j'ai modifié.

Je te renvoi le fichier avec tout les TAG renseigner car il y a dernier petit souci.

Merci beaucoup
 

Pièces jointes

  • excel download.xlsm
    21.5 KB · Affichages: 44
  • excel download.xlsm
    21.5 KB · Affichages: 50

Robert

XLDnaute Barbatruc
Repose en paix
Re : UserForm remplissage automatique tableau

Bonsoir,

En effet il y avait encore une erreur que j'ai pu déceler avec les TAG. C'est la ligne de code qui définit la dernière ligne DL (j'ai fait du grand n'importe quoi !).

Remplace la par :

Code:
DL = O1.Cells(Application.Rows.Count, 3).End(xlUp).Row + 1 'définit la dernière ligne éditée de la colonne 3 (=C)

L'essentiel est que tu comprennes le système et l'intérêt d'une boucle avec la propriété [Tag]. On aurait pu coder une ligne par TextBox alors que la avec 4 lignes on renvoie toutes les valeurs...
 

Tibo62

XLDnaute Occasionnel
Re : UserForm remplissage automatique tableau

Bonjour Robert merci beaucoup cela fonctionne parfaitement bien.
Cette macro permet de réperer la bonne ligne et ensuite renseigner les colonnes qui sont toujours fixe j'aime beaucoup ce principe et je l'utiliserai pour d'autres macro.

Par contre il est impossible de renseigner plusieurs TAG pour la même TextBox?


Merci encore de ton aide précieuse.

Cordialement
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : UserForm remplissage automatique tableau

Bonjour Tibo, bonjour le forum,

Plusieurs propriété [Tag] sur une même contrôle ce n'est pas possible mais plusieurs contrôles avec la même propriété [Tag], ça oui c'est possible (pour des Checkboxes ou des OptionButtons par exemple).
Je ne vois pas où tu veux en venir mais il est possible qu'il faille changer de méthode pour parvenir à tes fins...
 

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 727
Membres
110 552
dernier inscrit
jasson