• Initiateur de la discussion Initiateur de la discussion Startus
  • Date de début Date de début

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 !

S

Startus

Guest
Bonsoir tout le monde,

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...
 
Startus écrit:
Bonsoir tout le monde,

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...
 
Bonsoir Startus, en bonne nuit en France !

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]
 
Un GRAND MERCI Thierry, C'est TOUT BON...

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

Merci
 
- 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.

Discussions similaires

Réponses
12
Affichages
1 K
Réponses
5
Affichages
501
  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
529
Réponses
2
Affichages
816
Retour