comment basculer du code vba brut en userforme ?

pygargue

XLDnaute Nouveau
Bonjour a tous !!


Et surtout merci pour votre ajout !!
je suis en train de construire un projet de simplification de documents grâce a VBA. petite explication de la manœuvre, je suis dans une entreprise qui produit des déchets, et chaque déchet a un Bon de Suivi de Déchets (BSD). Mon but est de créer une interface excel demandant a l'utilisateur parmi deux liste déroulantes de choisir le lieux de production du déchet ainsi que la nature de celui ci. et a partir de ces deux choix je vais faire apparaître un bouton pour que le document voulu s'imprime tout seul.
cependant j'ai fait l'erreur de tout traduire en VBA, mais je me suis aperçu qu'un userforme pourrait être beaucoup plus lisible et simple d'utilisation que sur une feuille excel.

donc ma question est : savez vous comment je peux basculer tout mon code sur le userforme ?

en gardant les mêmes caractéristiques (en particulier j'ai créé une liste déroulante qui s'actualise a chaque nouvelles données, et j'aimerais garder ce principe sur mon userforme)

merci d'avance pour toutes vos réponses !!!!
ps je vous joint mon code actuel qui n'est pas totalement terminé mais qui permet de comprendre toutes le manipes voulues
Sub Macro1()
'
' Macro1
'

'

Worksheets("Tableau 1,2").Range("A4:A80").Copy
' je vais dans la feuille tableau des cellules A4 a A80 et je les copie (80 pour avoir 10 lignes de marges pour nouveaux dechets villes etc.....)
Worksheets("Feuil1").Range("A1").PasteSpecial Paste:=xlPasteValues
' je vais ensuite en feuil1 case A1 et je fais un collage spécial avec collagespé = chaque valeur en un seul exemplaire
Worksheets("Feuil1").Range("$A$1:$A$100").RemoveDuplicates Columns:=1, Header:=xlNo
' je travail en feuil1, des cellules A1 (bloquée) a A100 est supprime tous les doublons de la colonne 1, et la premiere valeure sera par defaut (header: = x1No) la premiere cellule de la page
Worksheets("feuil1").Range("A1:A" & Range("A65536").End(xlUp).Row).Name = "Dets"
'liste echets
' toujours en feuil1 des cellules A1 a A65536, la boucle va jusqu'en bas et reonde a la derniere ligne ecrite

' Macro2
'

'

Worksheets("Tableau 1,2").Range("E4:E80").Copy
' je vais dans la feuille tableau des cellules E4 a E80 et je les copie
Worksheets("Feuil1").Range("E1").PasteSpecial Paste:=xlPasteValues
' je vais ensuite en feuil1 case E1 et je fais un collage spécial avec collagespé = chaque valeur en un seul exemplaire
Worksheets("Feuil1").Range("$E$1:$E$100").RemoveDuplicates Columns:=1, Header:=xlNo
' je travail en feuil1, des cellules A1 (bloquée) a A100 est supprime tous les doublons de la colonne 1, et la premiere valeure sera par defaut (header: = x1No) la premiere cellule de la page
Worksheets("feuil1").Range("E1:E" & Range("E65536").End(xlUp).Row).Name = "villes"
'liste villes
' toujours en feuil1 des cellules A1 a A65536, la boucle va jusqu'en bas et reonde a la derniere ligne ecrite

End Sub

Private Sub recherchedecells()

derligne = Worksheets("Tableau 1,2").Range("A65536").End(xlUp).Row
' défini la derligne (derniere ligne)
For ligne = 4 To derligne
'pour les lignes de 4 a la fin
If Worksheets("Tableau 1,2").Cells(ligne, 5).Value = Worksheets("Interface").Range("C1").Value And Worksheets("Tableau 1,2").Cells(ligne, 1).Value = Worksheets("Interface").Range("E1").Value Then
lignetrouvée = ligne
'si il reconnait la valeur d'une cellule du tableau (tableau 1.2)avec celle en C1 del'interface ET celle de E1 sur la meme ligne alors il retient la valeur de la ligne du tableau 1.2 ou il a trouvé ces deux parametres
Else
End If
Next ligne
'siret
Worksheets("aaa").Range("A3").Value = Worksheets("Tableau 1,2").Cells(lignetrouvée, 14).Value
'société
Worksheets("aaa").Range("B13").Value = Mid(Worksheets("Tableau 1,2").Cells(lignetrouvée, 3).Value, 1, 2)
Worksheets("aaa").Range("B14").Value = Mid(Worksheets("Tableau 1,2").Cells(lignetrouvée, 3).Value, 4, 2)
'les deux lignes précédentes servent à éclater une suite de chiffre par groupe de deux

Msg = MsgBox("terminé")
End Sub
'And colonne ='
'alors je recopie la valeur du déchet dans la feuil 1 1er cellule vide colonne B Worksheets("Tableau 1,2").Cells(ligne, 1).Value
'And Worksheets("Interface").Range("E1").Value = Worksheets("Tableau 1,2").Cells(ligne, 1).Value Then
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : comment basculer du code vba brut en userforme ?

Bonjour Pygargue, bonjour le forum,

Pourrais-tu nous joindre un ficher exemple reprenant la structure de ton fichier original ou le fichier original anonymisé... Ça nous aiderait beaucoup et tu multiplierais tes chances d'obtenir des réponses plus rapidement...
 

pygargue

XLDnaute Nouveau
Re : comment basculer du code vba brut en userforme ?

Bonjour Pygargue, bonjour le forum,

Pourrais-tu nous joindre un ficher exemple reprenant la structure de ton fichier original ou le fichier original anonymisé... Ça nous aiderait beaucoup et tu multiplierais tes chances d'obtenir des réponses plus rapidement...

il n'y a pas de soucis,
excusez moi du retard c'était pour vous fournir un fichier propre et facilement lisible.
la matrice VBA est quasiment terminée il me manque juste deux ou trois champs mais je me débrouillerais (mise a jour de la date, séparation des numéros SIRET, le clear de fin, l'impression etc....)
le tableau comporte uniquement quelques lignes mais il faut imaginer que le tableau initial en fait une centaine.
C'est la feuille nommée interface que je voudrais reproduire en userforme (les deux listes déroulantes) et aussi avoir une case qui me permet d'entrer des données qui seront recopiées dans mon CERFA (exemple quantité de déchets).

je reste bien sur a votre entière disposition (les prochaines réponses seront en quasi immédiates dans la journée)
et je vous remercie mille fois pour votre précieuse aide !!!!!
 

Statistiques des forums

Discussions
312 103
Messages
2 085 325
Membres
102 862
dernier inscrit
Emma35400