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

Paritec

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

bonjour Safranien
je n'arrive pas à te repasser ton fichier alors voilà la macro modifiée , en Zip plus de 52,0 kilos??
a+
Papou :)
Code:
Option Compare Text

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) 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
 
Dernière édition:
G

Guest

Guest
Re : Liste déroulante changeante + modif macro

Bonjour,
Hello Papou,

Dans le fichier joint, la liste des dates est alimentée par une macro d'extraction avancée.
J'ai également redéfini le nom en 'ListeDates' pour alimenter la validation.

quant au compteur, il suffit de faire la même chose.

A+
 

Bebere

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

bonjour Safranien
à essayer
option compare text 'en tête de feuille(f1=aide)
If .Cells(i, 3).Value = "Gaz naturel" Then

ou opérateur like
If .Cells(i, 3).Value Like "Gaz naturel" Then
ou
If ucase(left(.Cells(i, 3).Value,len("Gaz"))) = ucase("Gaz") Then
rmq:tel que ton code devrait être dans un module
le code écrit est dans la feuille de code données
superflu d'écrire worksheers("données")
je ne comprend pas ce que tu veux en b13 et h13(peut être colonne a de données sans doublons)
à bientôt
 

safranien

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

merci pour vos reponses, je regarde cela.
En attendant j'avais reussi a faire qqch pour mon deuxieme probleme (je n'arrive pas a rejoindre un fichier, la fenetre bloque quand je veux uploader un fichier):
_ en Y13, cette formule: =SI(ESTERR(CHERCHE("gaz";C13));"non";"OK")
_ en Z13, cette formule: =SI(Y13="non";"";D13)

Et la macro modifiee comme suit:

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("Y" & Application.Rows.Count).End(xlUp).Row
If .Cells(i, 25).Value = "OK" Then
j = .Range("AA" & Application.Rows.Count).End(xlUp).Row + 1
.Cells(j, 27).Value = .Cells(i, 26).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

C'est clair que c'est du debutant (ce que je suis lol) mais comme quoi je cherche lol
 

safranien

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

vos reponses sont superes , merci. Je ne sais du coup laquelle je vais utiliser lol

Pour repondre a Bebere et apporter plus de precision concernant mon 1er probleme:

Dans l'onglet CDM, je voudrais, lorsque je clique sur B13 et H13, avoir une liste déroulante qui me permettrait de sélectionner le compteur que je veux.
Sachant que dans mon extraction il y a marqué le nom du compteur autant de fois qu'il y a d'evenement, je me retrouve avec des listes ou il y a marqué 11 fois EAU CHAUDE et 11 fois Gaz Naturel. Alors que je voudrais juste avoir dans la liste EAU CHAUDE et Gaz Naturel 1 seule fois.
Mon tableau se remplit en faisant une recherchev sur le nom qui apparait en B13 et H13 dans l'onglet données. C'est pour cela que j'aimerais une liste déroulante, pour eviter d'avoir a chaque fois taper le nom (et que ca m'inscrive le nom en majuscules si possible, meme si le nom est en miniscules dans l'onglet données).

J'espere que j'ai reussi a mieux expliquer.
 
G

Guest

Guest
Re : Liste déroulante changeante + modif macro

Re bonjour,

Pour ta liste de compteur:


Code:
[COLOR=blue]Sub[/COLOR] Liste_Compteurs()
Code:
[LEFT] [COLOR=blue]Dim[/COLOR] plgSource [COLOR=blue]As[/COLOR] Range, c [COLOR=blue]As[/COLOR] Range[/LEFT]
 
[LEFT] Sheets([I]"données"[/I]).Unprotect ([I]"flora1"[/I])

 [COLOR=blue]With[/COLOR] Sheets([I]"données"[/I])[/LEFT]

 
 
 
 
[LEFT]     [COLOR=green]'Extraction unique des libellé compteur en fonction des critères[/COLOR]

     [COLOR=blue]Set[/COLOR] plgSource = .Range([I]"C12:C"[/I] & .Range([I]"C"[/I] & .Rows.Count).[COLOR=blue]End[/COLOR](xlUp).Row)
[LEFT]     plgSource.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range([I]"AD4"[/I]), Unique:=[COLOR=blue]True[/COLOR][/LEFT]
[/LEFT]

 
 
 
 
[LEFT]     [COLOR=blue]Set[/COLOR] c = .Range([I]"AD4"[/I]).Offset(1)

     [COLOR=blue]Do[/COLOR] [COLOR=blue]While[/COLOR] [COLOR=blue]Not[/COLOR] c = [I]""[/I]
[LEFT]             c = UCase(c)
             [COLOR=blue]Set[/COLOR] c = c.Offset(1)
     [COLOR=blue]Loop[/COLOR]
     Sheets([I]"données"[/I]).Protect AllowSorting:=[COLOR=blue]True[/COLOR], AllowFiltering:=[COLOR=blue]True[/COLOR], _
                               AllowUsingPivotTables:=[COLOR=blue]True[/COLOR], Password:=[I]"flora1"[/I][/LEFT]
[/LEFT]

 
 
 
 
[LEFT] [COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]

[COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR][/LEFT]


Il ne te reste plus qu'à nommer la plage AD5:ADn pour alimenter ta liste de validation.​



J'ai oublié, dans mon premier fichier de mettre le paramètre 'Unique' à True dans la macro d'extraction des dates. La valeur actuelle est False (doublons)



A+​

[Edit]@Papou, la balise ne fonctionne pas encore. Voir discussion dans le salon​
 

Bebere

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

bonjour Hasco,Paritec
j'ai essayé le code de Hasco et regarder dans insertion nom définir
extractions =données!AD4
ce devrait être =données!$AD$5:$AD$6
après loop ajoute cette ligne
.Range("AD5:AD" & .Range("AD" & .Rows.Count).End(xlUp).Row).Name = "LeNomQueTuVeuxDonner"
à bientôt
 
G

Guest

Guest
Re : Liste déroulante changeante + modif macro

Re,
Bonjour Bebere:)

Il semblerait que ce qui marche sur Excel 2002 ne marche plus sur Excel 2007, pour avoir toutes les valeurs il faut explicitement que la plage d'extraction ait une une d'étiquette( pour ce case d'extraction de valeurs uniques).

On en découvre tous les jours

A++
 

safranien

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

Excusez moi mais je n'ai pas trop suivi ce que vous venez d'ecrire.
Ce que je disais moi c'est que vu que j'ai deux type d'appellation de compteur en colonne C, je devras avoir en AD5: EAU CHAUDE et en AD6: Gaz Naturel (c'est mieux quand c'est trié dans l'ordre alphabetique).
Donc c'est pour ca que je ne vois pas le rapport avec ce que vous venez d'ecrire (et puis pas vu marqué de loop lol)

Sinon, petite remarque, je perds le filtre sur mes colonnes apres avoir appuyé sur le bouton...
 

Bebere

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

pour répondre à Hasco
c'est vrai avec le filtre élaboré unique:=true mieux vaut mettre une entête
sans entêtes il y en a qui s'écrit 2 fois(excel 2003)

Sub x()

Dim plgSource As Range, c As Range

With Sheets("données")
.Unprotect ("flora1")

'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("AD4").Sort Key1:=.Range("AD5"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

.Range("AD5:AD" & .Range("AD" & .Rows.Count).End(xlUp).Row).Name = "LeNomQueTuVeuxDonner"

.Protect AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True, Password:="flora1"

End With

End Sub

à bientôt
 

Discussions similaires

Réponses
9
Affichages
404
Réponses
2
Affichages
288

Statistiques des forums

Discussions
312 298
Messages
2 086 981
Membres
103 419
dernier inscrit
mk29