Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Dans un classeur, j'ai crée des plages nommées dynamiques sur 5 feuilles...
La formule est : =DECALER(Feuil1!$C6$;;;NBVAL($C$6:$C$1500))
Ces plages se nommes respectivement: Opér.Compte1,Opér.Compte2... Le N° fait référence à l'index de la feuille
Un code VBA auquel je n'arrive pas à terminer, Copie la plage nommée de la feuille active, la Colle dans une autre feuille (vierge), Tri cette liste et Supprime les Doublons.
La feuille vierge, contient également une plage dynamique ('Test_Liste') que la macro utilise pour supprimer les doublons
Ensuite une autre macro ajoute cette même liste à la propriété RowSoure d'une ComboBox d'un Userform
Voilà le Code:
Code:
Sub Zone_Liste()
Dim Cible As Object
Dim Idx As Byte
Idx = Val(ActiveSheet.Index)
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
Range('Opér.Compte' & Idx).Copy
Worksheets(8).Range('A1').PasteSpecial Paste:=xlPasteValues
Columns('A:A').Sort Key1:=Range('A1'), Order1:=xlAscending
For Each Cible In Range('Test_Liste')
If Cible.Offset(1, 0) = Cible Then Cible.ClearContents
Next Cible
Columns('A:A').Sort Key1:=Range('A1'), Order1:=xlAscending
Application.Calculation = xlCalculationAutomatic
End Sub
Mon ennui est que ce code me tri la colonne A de la feuille active, au lieu de me trier la Colonne A de la feuille vierge ???
En revanche, si je modifie la ligne qui copie la plage comme ceci: Range('Opér.Compte1').Copy
Tout marche comme je le souhaite.
Mais en fait, je voudrai que ce code utilise plutôt la plage nommée de le feuille active comme référence et poursuive son exécution...
J'espère avoir été simple, mais pas facile...Ouarf...
Merci de votre aide...
Dans un classeur, j'ai crée des plages nommées dynamiques sur 5 feuilles...
La formule est : =DECALER(Feuil1!$C6$;;;NBVAL($C$6:$C$1500))
Ces plages se nommes respectivement: Opér.Compte1,Opér.Compte2... Le N° fait référence à l'index de la feuille
Un code VBA auquel je n'arrive pas à terminer, Copie la plage nommée de la feuille active, la Colle dans une autre feuille (vierge), Tri cette liste et Supprime les Doublons.
La feuille vierge, contient également une plage dynamique ('Test_Liste') que la macro utilise pour supprimer les doublons
Ensuite une autre macro ajoute cette même liste à la propriété RowSoure d'une ComboBox d'un Userform
Voilà le Code:
Code:
Sub Zone_Liste()
Dim Cible As Object
Dim Idx As Byte
Idx = Val(ActiveSheet.Index)
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
Range('Opér.Compte' & Idx).Copy
Worksheets(8).Range('A1').PasteSpecial Paste:=xlPasteValues
Columns('A:A').Sort Key1:=Range('A1'), Order1:=xlAscending
For Each Cible In Range('Test_Liste')
If Cible.Offset(1, 0) = Cible Then Cible.ClearContents
Next Cible
Columns('A:A').Sort Key1:=Range('A1'), Order1:=xlAscending
Application.Calculation = xlCalculationAutomatic
End Sub
Mon ennui est que ce code me tri la colonne A de la feuille active, au lieu de me trier la Colonne A de la feuille vierge ???
En revanche, si je modifie la ligne qui copie la plage comme ceci: Range('Opér.Compte1').Copy
Tout marche comme je le souhaite.
Mais en fait, je voudrai que ce code utilise plutôt la plage nommée de le feuille active comme référence et poursuive son exécution...
J'espère avoir été simple, mais pas facile...Ouarf...
Je ne suis plus vraiment certain, mais les plages nommées sont trouvées systématqiuement dans tous le classeur, sans notion de feuilles, et je me demande même si ça ne le fait pas dans tous les classeurs ouverts...
Enfin bref, je pense que tu t'embarques sur une drôle d'histoire...
Mais sinon, sans aucun test, je conseillerai déjà de t'orienter vers une syntax comme ceci :
With Worksheets(8)
.Range('A1').PasteSpecial Paste:=xlPasteValues
.Columns('A:A').Sort Key1:=Range('A1'), Order1:=xlAscending
End With
Par contre attention sur les anciennes version d'Excel il faut que la Feuille soit active pour permettre le 'Sort'...
Alors un 'Activate' peut être bienvenu
With Worksheets(8)
.Activate
.Range('A1').PasteSpecial Paste:=xlPasteValues
.Columns('A:A').Sort Key1:=Range('A1'), Order1:=xlAscending
End With
Si celà te fait avancer...
Bonne Nuit [ol]@+Thierry[/ol]
J'avais bien essayé le With worksheets(8)...End With, mais sans le .Activate
Pourtant je suis sur Excel 2003, Pack Office 2003 Pro
A ne rien y comprendre...
Enfin ma galère sur ce bout de code se termine Je vais pouvoir terminer mon Application
C'est une Application qui permet de gèrer les Compte bancaire, et souhaitai vraiment reprendre les opérations (plage nommée) du compte en cours afin que l'utilisateur se voit proposer un liste actualisée de la zone déroulante à chaque ouverture du Userform
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.