Affiner code pour transfert données
Bonjour
Voilà, je vais essayer d'être le plus claire possible sur ma demande et par avance merci de votre aide.
Ma demande est juste de vouloir transferer les infos d'une feuille vers une autre feuille. Je suis arrivé a faire des macros qui correspond à ce que j'attend mais bien évidemment avec des bugs que je n'arrive pas a régler. Grrrrr
Dans le fichier pour exemple en PJ il y a 4 feuilles,
- -> Cat et thème. (BDD servant aux 3 ComboBox en cascade dans l'UserForm1)
- -> Feuil2. (Ce trouve le bouton permettant l'ouverture du UserForm1)
- -> BDD Previ. (BDD qui ce complète grâce à la feuille "Passage" et qui permettra de compléter une future feuille (à créer).
- -> Passage. (feuille qui permet de servir de tampon lors du renseignement du UserForm1 afin de remplir la ListBox1)
La ou ça coince c'est sur la suite et donc sur le transfert des données en feuille "Passage" vers feuille "BDD Previ" malgré avoir trouvé un code sur ce fonctionnement.
Ce code appelé "Transfert" dans Module 1 fonctionne si j'ouvre l'UserForm1 sur la feuille "BDD Previ" Mais pour mon cas toutes les feuilles sauf "Feuil2" seront masquées et la !! la macro ne fonctionne plus et dans la ListBox1 je récupère les titres (ligne 1) de la feuille "Passage". JE N'Y Comprends plus rien.
Mon but est d'avoir juste la feuill2 visible, ouvrir l'UserForm1 que l'on renseigne, valide avec bouton "journée suivante" puis quand on le souhaite Click sur bouton "Validation liste" qui permet le transfert des données vers feuill "BBD Previ".
Merci de votre soutien sur cette demande.
Fichier en PJ.
Bonjour pompaero
dans le chargement de la listbox
le code est le suivant
bd = f.Range("A2:D" & [A65536].End(xlUp).Row).Valuele problème est que tu sélectionne une plage de cellules de la feuille f A2 a D mais de la feuille active soit la feuille 2 qui est vide.
il manque un f.
comme ceci
bd = f.Range("A2:D" & f.[A65536].End(xlUp).Row).Valuec'est le même problème dans la macro transfert (2 fois)
Worksheets("Passage").Range("A2:H" & Worksheets("Passage").Range("A" & Rows.Count).End(xlUp).Row).Copyil faut également supprimer le .select dans la macro transfert
Bonjour BOB71AU
Merci d'être arrêté sur mon post pour m'aider.
Je viens de suivre tes conseils, après plusieurs essais cela a l'aire de fonctionner parfaitement maintenant.
sauf que (il y a tjrs un mais,
Cdlt
Re
Je viens de tester , c'est bien la ligne 1 de la feuille "Passage" donc les titres qui s'affiche dans listbox après avoir click sur bouton "Validation liste".
Re
je ne constate pas ce problème
Sub Transfert() 'Transfert des données de la feuille "passage" vers feuille "BDD Previ"
With Sheets("BDD Previ")
dl = .Cells(Rows.Count, 1).End(xlUp).Row + 1
Worksheets("Passage").Range("A2:H" & Worksheets("Passage").Range("A" & Rows.Count).End(xlUp).Row).Copy
.Cells(dl, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Worksheets("Passage").Range("A2:H" & Worksheets("Passage").Range("A" & Rows.Count).End(xlUp).Row).ClearContents
Application.CutCopyMode = False
'Worksheets("Passage").Visible = 0
' .Select
End With
End Sub
Sub Alim_ListBx1() 'Alimentation de la ListBox1 par rapport à la feuille "Passage" qui sert de tampon
Dim f, bd()
Set f = Sheets("passage")
bd = f.Range("A2:D" & f.[A65536].End(xlUp).Row).Value
UserForm1.ListBox1.List = bd
End Subsinon reposte le fichier modifié qui ne fonctionne pas
rere
Effectivement, je viens de constater.
Je ne vois pas trop pourquoi recharger la listbox puisque tu viens de vider la feuille passage
mais plutot vider la listbox
' Alim_ListBx1
Me.ListBox1.ClearRe
Effectivement après réflexion je me suis rendu compte que je réarmé la ListBox donc j'ai cherché un code pour effacer,
le code
Sub Vide_ListBx1() 'Vide la ListBox1 après validation du transfert des données
Dim i As Integer
For i = 1 To UserForm1.ListBox1.ListCount
'Supprimer un élément de la ListBox.
UserForm1.ListBox1.RemoveItem 0
Next i
End SubMais ta solution fonctionne aussi bien et est plus simple, donc je garde la tienne.
Merci
Cdlt
Merci pour tout
Je vais essayer de poursuivre seul l'évolution du projet et si besoin je reviendrais ici avec grand plaisir.
Je mets résolu et certainement à plus tard,
Encore merci
Cdlt