remplir un userform à partir de ligne dans excel

aeryne

XLDnaute Junior
Bonjour
Je possède un fichier excel et j'aimerai pouvoir remplir des textbox et combobox à partir du fichier.
chaque ligne correspond à un numero de dossier différent et j'aimerai si je choisi un numero de dossier que les informations que je possède sur ce fichier remplissent le userform pour moi pouvoir ensuite modifier les données si elles sont erronées et les renvoyer de nouveau dans le tableau écraser les anciennes données.
Sachant que le tableau est incrémenté régulièrement il dépassera les 1000 lignes sans souci et il possede 65 colonnes.
d'ou le désire de visualiser certaines informations de facon plus pratique.
les numeros de dossier se situent colonne C et mes données commencent colonne B et ligne 2.

voici 2 ébauches différentes par rapport à ce que j'ai trouvé sur le net mais aucunes ne marchent.
Code:
'Private D As Object 'déclare la variable D (onglet Données)
'Private LI As Integer 'déclare la variable LI (Ligne)



'Private Sub UserForm3_Initialize() 'à l'initialisation de l'userForm


'Dim DL As Integer 'décalre la variable DL (Dernière Ligne)
'Dim PL As Range 'déclare la variable PL (PLage)

'Set D = Sheets("AVP") 'définit l'onglet D
'DL = D.Cells(Application.Rows.Count, 3).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet D
'Set PL = D.Range("C2:C" & DL) 'définit la plage PL
'Select Case DL 'agit en fonction de la valeur de la dernière Ligne DL
'    Case 2 'cas 2
'        MsgBox "La base de données est vide": End 'message, stoppe toue exécution de code
'    Case 3 'cas 3'alimente la ComboBox1 avec la valeur de la cellule A3
'        Me.ComboBox1.AddItem (D.Range("C2").Value)
'    Case Else 'tous les autres cas
'        Me.ComboBox1.List = PL.Value 'alimente la ComboBox1 avec les valeur de la plage PL
'End Select 'fin de l'action en fonction de...
'End Sub

Private Sub textbox23_Change() 'au changement dans la CombobOx1


'le premier élément d'une Combobox a 0 comme valeur de la prorpiété [ListIndex], le second 1, le troisième 2, etc.
'si il n'y a pas de doublons, (ListIndex + 3) renvoie le numéro de la ligne d l'élément sélectionné
'LI = Me.ComboBox28.ListIndex + 2 'récupère le numéro de ligne de l'élément sélectionné

'rechercher les différentes valeurs saisies dans la base de données
'Me.TextBox1 = D.Cells(LI, 2)
'Me.TextBox3 = D.Cells(LI, 4)
'Me.ComboBox7 = D.Cells(LI, 5)
'Me.ComboBox5 = D.Cells(LI, 8)
'Me.TextBox20 = D.Cells(LI, 17)
'Me.TextBox21 = D.Cells(LI, 19)
'Me.TextBox22 = D.Cells(LI, 20)
'Me.ComboBox7 = D.Cells(LI, 21)
'Me.TextBox18 = D.Cells(LI, 56)
'Me.TextBox19 = D.Cells(LI, 57)
'Me.ComboBox1 = D.Cells(LI, 58)
'Me.ComboBox12 = D.Cells(LI, 59)
'Me.ComboBox13 = D.Cells(LI, 60)
'Me.ComboBox3 = D.Cells(LI, 61)
'Me.ComboBox9 = D.Cells(LI, 62)
'Me.ComboBox4 = D.Cells(LI, 63)

'End Sub


Code:
'Sub UserForm3_activate()
Cells.Find(what:="textbox23.value", after:=ActiveCell, LookIn:=xlFormulas, lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False, searchformat:=False).Activate
TextBox23.Value = Range(ActiveCell).Value
ActiveCell.Offset(0, -1).Select

TextBox1.Value = Range(cell).Value


End Sub

j'ai mi un petit morceau du fichier car il était beaucoup trop important.
j'espère que j'ai été claire dans mes explications et merci d'avance de votre aide ou de vos explications.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : remplir un userform à partir de ligne dans excel

Bonjour aeryne,

Vous auriez pu au moins joindre un fichier ! :mad:

Je vous propose un autre type de formulaire à partir d'une feuille Excel. Ceci pour ne pas avoir à gérer les différents formats des Textbox d'un userform quant il s'agit de les retranscrire dans la feuille "Fournisseur". Et aussi, parce que le codage d'un Userform me barbe :p.


  • pour afficher le formulaire, sélectionner l'onglet "Formulaire"
  • pour sélectionner un dossier, utilisez la liste déroulante
  • pour se déplacer sur le formulaire, utiliser la touche <Tabulation> ou bien la souris
  • le champ sélectionné a un intitulé avec une police rouge
  • le champ "Dossier" n'est pas modifiable via le formulaire
  • après avoir modifié un champ (ou plusieurs), pour sauvegarder les données du formulaire vers la feuille "Fournisseur", cliquer sur le bouton rouge (qui n'apparaît que s'il y a un soupçon de modification d'au moins un des champs du formulaire)

Le code est dans le module de code de la feuille "Formulaire". Il y a aussi un peu de code dans le module de code de ThisWorkbook.


nota 1 : en cas de plantage, il se peut que l'interception des évènements soit désactivée. Dans ce cas, afficher le code de la feuille "Formulaire", se placer dans le code de la procédure ReActiverEvents() puis exécuter cette procédure à la main (touche de fonction F5). Sélectionner ensuite la feuille "Fournisseur" puis la feuille "Formulaire" pour tout réinitialiser.
Vous pouvez aussi refermer Excel et le ré-ouvrir (le plus serait de rechercher le pourquoi du plantage et de corriger le code :confused:)
 

Pièces jointes

  • aeryne-formulaire-v1.xlsm
    64.8 KB · Affichages: 133
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : remplir un userform à partir de ligne dans excel

re,

Petite modif. pratique :

Si, dans la feuille "Fournisseur", on double-clique sur une cellule de la colonne C contenant une référence de dossier, alors le formulaire s'affiche directement avec les données de la référence du dossier double-cliqué.
 

Pièces jointes

  • aeryne-formulaire-v1a.xlsm
    66.7 KB · Affichages: 173
Dernière édition:

aeryne

XLDnaute Junior
Re : remplir un userform à partir de ligne dans excel

super ça a l'air de faire exactement ce que je veux. génial merci maintenant j'ai plus qu'a voir pour faire apparaitre cet onglet avec un bouton car le fichier comporte déjà une dizaine d'onglet et je dois mettre 3 fois cette page dans le fichier euh non même 6 fois car du coup je vois une autre utilisation dérivé: compléter les champ qui ne seront pas rempli dans un premier temps
vraiment génial je ne savais pas que l'on pouvait écrire en vba mais en dehors d"un formulaire
j'ai encore plein de chose à apprendre
 

aeryne

XLDnaute Junior
Re : remplir un userform à partir de ligne dans excel

euh...petite question j'ai copié et collé la feuille formulaire et j'ai mis le nom de la feuille qui contient les données mais les champs et la combobox reste vide
est ce que j'ai oublié de faire quelque chose?

j'ai trouvé lol


encore une modification du message lol
lorsque je fais une modification le bouton sauvegarde apparait et lorsque je clique dessus il y a le message suivant qui apparait:
Impossible d'ececuter la macro''AVP-Année encours.xlsm'!Feuil1.ModifierLigne'. il est possible qu'elle ne soit pas disponible dans ce classeur ou que toutes les macro soient désactivées.

or la feuille formulaire est en place 3 dans mon fichier. je ne comprends pas trop ce qui bloque dans la partie sub modifierligne()
 
Dernière édition:

aeryne

XLDnaute Junior
Re : remplir un userform à partir de ligne dans excel

bon apparemment ça plante des que la protection est enlevée mais je n'arrive pas à la remettre
et c'est aussi sensible au numéro de la feuille elle doit être en une mais moi parfois elle est en 3 parfois en 4 et même en faisant attention à cela j'ai des erreur qui se déclanche
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : remplir un userform à partir de ligne dans excel

Bonsoir aeryne,

euh...petite question (...) lorsque je fais une modification le bouton sauvegarde apparait et lorsque je clique dessus il y a le message suivant qui apparait:
Impossible d'ececuter la macro''AVP-Année encours.xlsm'!Feuil1.ModifierLigne'. il est possible qu'elle ne soit pas disponible dans ce classeur ou que toutes les macro soient désactivées.

or la feuille formulaire est en place 3 dans mon fichier. je ne comprends pas trop ce qui bloque dans la partie sub modifierligne()

Il peut y avoir plusieurs raisons. Celle qui me vient tout d'abord à l'esprit est que la macro associée au bouton n'est pas la bonne macro ou du moins ne référence pas la bonne feuille de calcul.

Pour vérifier (c'est assez délicat :rolleyes:) :

  • fermer Excel
  • le ré-ouvrir, à partir de l'explorateur par un double-clique sur le fichier en cause tout en maintenant la touche MAJ enfoncée (laisser la touche MAJ enfoncée suffisamment longtemps pour laisser le temps nécessaire à l'ouverture complète du fichier). Cette manip. permet d'ouvrir le fichier sans activer les macros.
  • Aller sur la feuille du Formulaire

si le bouton rouge n’apparait pas (et ça devrait être le cas) :
  • ôter la protection de la feuille du formulaire (menu Révision / Ôter la protection de la feuille)
  • tapez sur Alt+F11 (l'environnement VBE s'ouvre)
  • tapez Ctrl+g
  • dans la fenêtre d'exécution (vide) qui apparait, coller le code vba suivant :
  • Code:
    for each elem in ActiveSheet.Shapes: elem.Visible=true: next
  • après avoir coller ce code, taper >Entrée -> le bouton devrait apparaitre sur le formulaire

Si le bouton rouge rouge est visible:

  • ôter la protection de la feuille du formulaire (si ce n'est pas déjà fait - vérifier quand même)
  • cliquer-droit sur le bouton rouge
  • choisir le menu "Affecter une macro..."
  • et sélectionner dans la liste la macro qui contient ModifierLigne puis cliquer sur OK
  • refermer le fichier
  • le ré-ouvrir normalement et tester.

Sinon joindre votre fichier pour que je l'examine... (je vais m'absenter une quinzaine, il faut faire vite)
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : remplir un userform à partir de ligne dans excel

Re,

j'ai reussi à ne plus avoir ce code d'erreur.
il a fallu que je place le formulaire en feuille 1 dans le classeur.
Maintenant tout fonctionne jusqu'à la fin ou la j'ai erreur 400

On avance, mais l'erreur 400 peut vouloir dire (mais c'est pas certain) qu'il y a un problème au niveau des feuilles. Quand on ouvre un projet VBA, on voit des feuilles avec deux noms.

Une série de noms de feuilles Feuiln suivi entre parenthèses du nom qui figure sur l'onglet. Feuiln est le CodeName de la feuille. Il ne peut être changé par programmation. Il peut être modifié dans l'environnement VBE (sélectionner dans la fenêtre de projet la feuille désirée - cliquer sur F4 -> on peut changer le codename qui s'appelle (name) !!! )

Si on déplace les onglets, ça ne change rien au niveau de VBA pour les codenames.

On peut vite arriver à un micmac difficile à gérer. Ex: on peut avoir simultanément dans un classeur :Feuil1 (Feuil2) et Feuil2 (Feuil1)
 

aeryne

XLDnaute Junior
Re : remplir un userform à partir de ligne dans excel

lorsque j'ouvre le fichier sur office 2010 j'ai pour la section: Public Sub Worksheet_Activate()
ça bloque sur cbxDossier et ca me dis variable non definie

je me demande si ca ne vient pas de l'incompatibilité des bouton activex sur excel 2010 depuis une mise a jour de decembre.
j'ai du transformer mes boutons activex en bouton formulaire simple.
j'ai pu inserer une liste deroulante formulaire simple mais je ne sais pas comment l'incorporer à ton script.
la liste s’appelle "zone combinée 3"
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : remplir un userform à partir de ligne dans excel

Bonsoir aeryne,

lorsque j'ouvre le fichier sur office 2010 j'ai pour la section: Public Sub Worksheet_Activate()
ça bloque sur cbxDossier et ca me dis variable non definie

je me demande si ca ne vient pas de l'incompatibilité des bouton activex sur excel 2010 depuis une mise a jour de decembre.
j'ai du transformer mes boutons activex en bouton formulaire simple.
j'ai pu inserer une liste deroulante formulaire simple mais je ne sais pas comment l'incorporer à ton script.

Le code est construit pour un contrôle ActiveX Combobox qui doit s'appeler" cbxDossier" (propriété Name quand on clique-droit sur le contrôle et qu’on choisit le sous-menu Propriété)

Le problème des contrôle ActiveX qui ne fonctionnent plus après MàJ de Windows a déjà été soulevé sur le forum et résolu notamment, me semble-t il, dans un message de Staple1600 que je vais essayer de te retrouver.
 

aeryne

XLDnaute Junior
Re : remplir un userform à partir de ligne dans excel

j'ai trouvé un post sur un forum qui dit qu'il faut désinstaller des fichier de l'ordinateur mais moi je dois utiliser ce fichier excel au boulot et on sera sur pas mal d'ordinateur à le faire et je ne peux rien désinstaller du tout
 

mapomme

XLDnaute Barbatruc
Supporter XLD

Discussions similaires

Réponses
18
Affichages
630
Haut Bas