Transposition d'une plage nommée

Bonjour à tous,

Après recherches je ne trouve rien là-dessus, mis à part avec l'aide de VBA.

J'ai une plage nommées qui n'a qu'une ligne de hauteur mais un nombre de colonnes variable, avec des blancs et parfois des doublons.

Je cherche à la transposer dans une autre feuille afin d'en faire une colonne pour pouvoir la purger et en faire une liste déroulante qui me servira à faire des filtres.

Une idée ?

Un grand merci

Vianney

bonjour Vlev

j'ai peut être pas compris la question mais je ne voie pas trop le problème

sélection de la ligne d'origine sur la feuille source

faire copier

clic droit sur une cellule sur la feuille but

choisir Options de collage / Transposer

a bientôt sur le forum

Papyg

merci papyg de t'être penché sur mon problème. Mais je veux que ce soit dynamique puisque comme je l'ai dit cette plage nommée varie et s'allonge au fil du temps.

Re

je suis peut être un peu raz des pâquerettes mais si tu ne veux pas de vba je ne comprends pas ce que tu entends par dynamique ?

ou alors qq chose comme ça

si tu saisie une valeur sur la ligne 1 de la feuille source, elle est copié en colonne A de la feuille but

9transpose.xlsx (43.00 Ko)

A plus sur le forum

Papyg

Bonjour,

Une proposition Power Query avec un soupçon de VBA pour l'actualisation des données.

Pour Excel 2013, il faut installer le complément gratuit de Microsoft.

Cdlt.

8viev31.xlsm (24.16 Ko)

Merci à vous deux.

J'ai changé mon fusil d'épaule et m'oriente vers des listBox pour mes filtres...avec du VBA du coup. La méthode de transposition était mauvais dès le départ. Je vais faire des boucles sur mes plages nommées (en ligne) pour implémenter mes listes de filtres, et re-boucle pour activer le filtre.

Je vous tiens au courant.

Belle journée,

Vianney

Bonjour à tous,

J'ai réussi à faire mes filtres avec des listBox, ça marche très bien sauf qu'à l'ouverture du classeur j'ai aléatoirement une erreur d'exécution 438 "Propriété ou méthode non géré par cet objet" sur la ligne ".ListBox1.Selected(0) = True"

le code complet de Workbook_Open:

Private Sub Workbook_Open()

    Call filtres_erase
    Call Tri_colonnes
    Call UP
    With Worksheets("MAIN")
        .ListBox1.Selected(0) = True
        .ListBox21.Clear
    End With

End Sub

Mes listbox (activeX) sont directement sur la feuille. je pense qu'il faut que je les déclare en temps qu'objet à l'ouverture mais je ne trouve pas comment.

Merci pour votre aide.

Vianney

Un petit coup de pouce à ma dernière question ?

Merci !

bonjour Vianney

déjà avec un fichier c'est pas évident

alors sans fichier c'est coup de bol possible

mais généralement c'est plutôt coup de pouce impossible

PAPYG

Bonjour Papyg,

Voici mon fichier. J'ai retiré pas mal de données pour la confidentialité mais ce qui pose problème subsiste.

Il doit manquer une déclaration d'objet mais je ne vois pas où.

Le fonctionnement: quand je sélectionne un item de la liste 1, la liste 2 affiche dynamiquement des résultats, soit issus d'une liste pré-établie, soit issus de boucles qui vont chercher les données des colonnes de droite.

Le code se situe dans le VBA de la feuille "MAIN", certaines fonctions dans les modules.

14file-forum.xlsm (273.10 Ko)

Si tu peux jeter un oeil, Merci !

bonjour Vianney
en fait sous toutes réserves je ne pense pas qu'il s'agisse d'un problème de déclaration.
A mon avis à l'ouverture la compilation ne trouve pas ListBox21 qui est un contrôle de la feuille MAIN
pour passer la compilation j'ai transféré le code de ListBox1_Change dans Module3/Sub changlistBox1

Private Sub ListBox1_Change()
Call prot0
Call changlistBox1
Call prot1
End Sub

ensuite il a fallu donner le nom complet à TextBox21

Worksheets("MAIN").TextBox21.

puis mettre un Flag (qui est False au démarrage) dans Module3/Sub changlistBox1 et qu'on passe à True après le passage à l'ouverture sans exécuter le code.

Ca semble marcher. a tester !

PAPYG

Bonjour PAPYG

hélas j'ai eu le message dès l'ouverture du fichier, la ligne en jaune est la première boucle for each. Je ne comprends pas pourquoi il parle d'objet requis ici. mes variables sont toutes déclarées. Quand on passe la souris sur colone et zone il indique colone=nothing, zone=nothing comme si c'était des objets. Mais ils ne sont déclarés que comme des Ranges.

424

....?

Vianney

bonjour Vianey

la c'est autre chose je pense que tu a un petit conflit dans tes variables 'zone' et un problème d'initialisation de ta variable 'MonRange'

en effet

dans le module 'PubliqueVar' tu déclare une variable 'zone' publique et une variable 'MonRange' publique

Public MonRange As Range
Public zone As Range

dans le code de la feuille 'MAIN' Sub 'ListBox21_Change' tu déclare une variable 'zone' locale que tu initialise = 'MonRange'

Or à l'arrivée dans 'MAIN' Sub 'ListBox21_Change' la variable 'MonRange' n'est pas initialisée donc le plantage de la boucle for each est logique (aucune colonne à traité puisque rien dans 'zone')

Dim zone As Range

dans le module 'fonctions_Affichage' Sub 'affich_OUI' tu déclare une variable 'zone' locale

Dim zone As Range

PAPYG

Oui, j'ai trouvé avec cette piste, merci PAPYG. En effet MonRange était vide à l'ouverture du classeur. En lui donnant une valeur dasn l'évènement Open je n'ai plus de problème.

Encore merci !

Vianney

Rechercher des sujets similaires à "transposition plage nommee"