Liste déroulante changeante + modif macro

safranien

XLDnaute Occasionnel
Bonjour,

dans le fichier joint, je suis confronté à deux problemes que je n'arrive pas à résoudre:
_ dans l'onglet "donnée" j'y colle des extractions d'un logiciel. Ces données servent à alimenter mon tableau final (onglet "CDM").
Je voudrais faire en sorte de pouvoir retrouver dans les cellules B13 et H13 de l'onglet "CDM", une liste déroulante qui me permette de choisir le compteur voulu. J'arrive a faire une liste deroulante, mais avec autant de fois les noms des compteurs. Et cette liste de noms peut varier en longueur d'une extraction à l'autre.

_ dans ce fichier il y a une petite macro qui me permet de dégager une liste de dates (colonne AA de l'onglet données). Liste par la suite je retrouve via un menu deroulant dans la plage A15:A25. Mon soucis, est que la macro fonctionne en cherchant un intitulé précis ("Gaz naturel") et si j'ai une extraction et que le compteur ne s'appelle pas Gaz naturel mais Gaz Naturel 2 par exemple, la macro ne fonctionne pas. Je dois donc soi changer le nom dans la macro, soit changer le nom des cellules.
N'est-il pas possible que la macro "s'adapte" sachant qu'il y a une certitude, c'est qu'il y aura toujours le mot "gaz" qui apparaitra (mais il peut etre en majuscule, miniscules, avec d'autres lettres derriere etc). Donc est ce que c est possible que la macro, a partir du moment ou elle voit le mot gaz, puisse fonctionner et générer mes dates.

Merci d'avance pour vos lumieres
 

Pièces jointes

  • Essai Excel Downloads.zip
    47.3 KB · Affichages: 57
  • Essai Excel Downloads.zip
    47.3 KB · Affichages: 62
  • Essai Excel Downloads.zip
    47.3 KB · Affichages: 61
G

Guest

Guest
Re : Liste déroulante changeante + modif macro

Re,

Il ne faut pas se contenter de faire du copier-coller, mais essayer de comprendre.
Bebere à rajouter les instructions de tri et de nommage de la plage et moi j'ai rajouté la ligne qui crée l'étiquette d'extraction.

Voici la synthèse des deux, avec en plus le rétablissement du mode Autofiltre de la plage.

Après avoir lancer la macro tu auras un nom de plage 'ListeCompteurs' dont tu pourras te servir dans tes validations de données.

Code:
Sub Liste_Compteurs()
    Dim plgSource As Range, c As Range
    Dim FilMode As Boolean, Filtres As Filters
    Sheets("données").Unprotect ("flora1")
    With Sheets("données")
        FilMode = .AutoFilterMode
 
        .Range("AD4") = "Libellé Elément"
        'Extraction unique des libellé compteur en fonction des critères
        Set plgSource = .Range("C12:C" & .Range("C" & .Rows.Count).End(xlUp).Row)
        plgSource.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("AD4"), Unique:=True
        Set c = .Range("AD4").Offset(1)
        Do While Not c = ""
                c = UCase(c)
                Set c = c.Offset(1)
        Loop
        .Range("AD5:AD" & .Range("AD" & .Rows.Count).End(xlUp).Row).Name = "ListeCompteurs"
        .Range("AD4").Sort Key1:=.Range("AD5"), Order1:=xlAscending, Header:= _
                xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
                    DataOption1:=xlSortNormal
        'Rétablir le mode autoFiltre éventuel
        If FilMode Then .Range("A12").AutoFilter
        Sheets("données").Protect AllowSorting:=True, AllowFiltering:=True, _
                                  AllowUsingPivotTables:=True, Password:="flora1"
    End With
End Sub

A+
 

safranien

XLDnaute Occasionnel
Re : Liste déroulante changeante + modif macro

je sais bien qu il ne suffit pas de faire duu copié collé mais de comprendre. mais ca fait 4 jours non stop que je suis sur le fichier, a fixer les lignes, a faire , defaire, etc et là à 16h30, j'ai eu un peu de mal (et pour le coup quand j'ai ecris mon message, j'etais perdu entre les commentaires que vous aviez posté).
J'ai montré en debut de post que je cherche et que je ne me contente pas d arriver, de faire "coucou, faites moi ca, merci (pour ceux qui disent merci !!), au revoir".
Donc je comprends tres bien la remarque et je tenais juste a dire que je me donne beaucoup de mal, etant un débutant, et passant des heures et des heures sur les forum pour justement essayer de comprendre la mecanique des macro . Comme on dit, j apprends sur le tas.

Tout ca pour dire que je vous suis tres reconnaissant du temps que vous passez pour aider les gens comme moi qui oui, essaient de comprendre.

Je rentre seulement maintenant du travail et j'essaierai demain cette proposition.

En attendant je vais boire un coup, j'en ai besoin lol

A la votre !!! ;-)
 

safranien

XLDnaute Occasionnel
Re : Liste déroulante changeante + modif macro

Bonjour,

je viens donc de tester le code ci-dessus et je n'ai toujours qu'un seul compteur qui se degage et le filtrage ne se remet pas. grrrr je ne comprends pas pkoi ca marcherait chez vous et pas chez moi?

EDIT:

je pense avoir trouvé pkoi cela ne fonctionnait pas. Il semble que le code pour la liste de compteur ne marchait pas avec le code que j'avais pour la liste de dates ci dessous:
Code:
Sub Liste_dates()
Sheets("données").Unprotect ("flora1")
With Sheets("données")
.Range("AA1:AA" & Range("AA" & Application.Rows.Count).End(xlUp).Row).ClearContents
For i = 13 To .Range("C" & Application.Rows.Count).End(xlUp).Row
    If .Cells(i, 3).Value = "GAZ NATUREL" Then
        j = .Range("AA" & Application.Rows.Count).End(xlUp).Row + 1
        .Cells(j, 27).Value = .Cells(i, 4).Value
    End If
Next i
End With
MsgBox "Liste générée"
Sheets("données").Protect AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True, Password:="flora1"
End Sub

Je l'ai donc modifiée ainsi

Code:
Sub Liste_dates()
Sheets("données").Unprotect ("flora1")
With Sheets("données")
.Range("AA1:AA" & Range("AA" & Application.Rows.Count).End(xlUp).Row).ClearContents
For i = 13 To .Range("C" & Application.Rows.Count).End(xlUp).Row
    If .Cells(i, 3).Value Like "*Gaz*" Then
        j = .Range("AA" & Application.Rows.Count).End(xlUp).Row + 1
        .Cells(j, 27).Value = .Cells(i, 4).Value
    End If
Next i
End With
MsgBox "Liste générée"
Sheets("données").Protect AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True, Password:="flora1"
End Sub

et j'ai ajouté la commande dans le bouton ce qui donne
Code:
Private Sub CommandButton1_Click()
Liste_dates
Liste_Compteurs
End Sub

et ca semble fonctionner, je recupere bien les dates et les intitules des compteurs mais tjrs pas le filtre. Je ne comprends pas pourquoi.



Merci
 
Dernière édition:
G

Guest

Guest
Re : Liste déroulante changeante + modif macro

Bonjour,

Ben si ça marche pas comme ça, faisons autrement!

De quel nombre maximum de 'compteurs' différents parlons nous?
Cela ne vaut peut-être pas la peine de faire une usine à gaz pour 10 valeurs possibles!
Est-ce que la liste des compteurs uniques change souvent?

Sinon voici une autre méthode pour extraire des valeurs uniques (Tu aurais pu la trouver par une recherche sur le forum) c'est un sujet maintes fois traité.

Exemple non testé sur ton fichier, rajouter l'instruction de tri donnée par Bebere
Code:
Sub Liste_Compteurs()
    Dim plgSource As Range, c As Range
    Dim oDico As Object
    Sheets("données").Unprotect ("flora1")
    With Sheets("données")
        FilMode = .AutoFilterMode
        .Range("AD5:AD" & .Range("AD" & .Rows.Count).End(xlUp).Row).ClearContents
        .Range("AD4") = "Libellé Compteur"
        'Extraction unique des libellé compteur en fonction des critères
        Set plgSource = .Range("C13:C" & .Range("C" & .Rows.Count).End(xlUp).Row)
        Set oDico = CreateObject("Scripting.Dictionary")
        For Each c In plgSource
            If Not oDico.Exists(c.Value) Then oDico.Add c.Value, c.Value
        Next
        If oDico.Count > 0 Then
            .Range("AD5").Resize(oDico.Count).Value = Application.Transpose(oDico.Keys)
        End If
        .Range("AD5:AD" & .Range("AD" & .Rows.Count).End(xlUp).Row).Name = "LeNomQueTuVeuxDonner"
    End With
End Sub
A+
 
Dernière modification par un modérateur:

safranien

XLDnaute Occasionnel
Re : Liste déroulante changeante + modif macro

Bonjour Hasco,

merci pour ta reponse. Pour repondre a ta question, mon fichier est sensé pouvoir contenir jusqu'a 11 compteurs en tout. La liste des compteurs pourra changer souvent car ce fichier doit servir pour verifier les calculs de plusieurs installations, qui sont toutes des config differentes. ce fichier a donc pour but d'etre un outil commun, plutot que de faire un fichier specifique a chaque installation (ce qui aurait fait beaucoup de fichiers).
Sinon pour ce qui est de ton code, je ne l'ai pas encore testé, car comme je l'ai ecris ci-dessus, je pense avoir réussi a modifié le code pour que cela fonctionne. apres plusieurs essais, avec differentes config, je recupere bien les dates et l'ensemble des noms de compteurs.
Je n'ai donc pas effectivement cherché plus sur le forum pour arriver a trouver le code que tu viens de poster, car en fait je demandais juste que vous me validiez la modif. que j'ai faite, me dire si pour vous il n'y avait pas d'incoherence, de choses "choquantes".
Donc si ma modif. vous semble correcte, a priori, la recup des dates et des noms de compteurs est reglé. Il me reste juste a trouver pourquoi le filtre ne se met pas.
 

safranien

XLDnaute Occasionnel
Re : Liste déroulante changeante + modif macro

je viens de voir un petit "beug". Si jamais on clique sur le bouton, alors qu'il n'y a rien dans les cellules des colonnes B à O, cela met une erreur avec le deboguage, et ensuite, toutes les cellules de ces colonnes se retrouvent en protegees !!! Et la, heu, ben je suis desolé, j'ai beau chercher, je n'arrive pas a voir comment eviter cela.
 

Si...

XLDnaute Barbatruc
Re : Liste déroulante changeante + modif macro

Salut

avec ce que j'ai compris, une autre idée de gestion : une seule macro facilement adaptable à n compteurs (mais il y aura sans doute le problème des dates à revoir).
 

Pièces jointes

  • 82300.zip
    47.4 KB · Affichages: 21

Bebere

XLDnaute Barbatruc
Re : Liste déroulante changeante + modif macro

bonjour Safranien,Hasco,Si
les codes proposés plus haut sont ok
dans le code du bouton un test pour éviter erreur,formule en a changée
Cijoint.fr - Service gratuit de dépôt de fichiers
à bientôt
 

Discussions similaires

Statistiques des forums

Discussions
314 659
Messages
2 111 623
Membres
111 236
dernier inscrit
vinthi