Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 macro IF et commandes filtre avancé

aragdur

XLDnaute Junior
Salut,

Je monte un fichier avec macro.
Grosso modo, j'ai une table de saisi et le but, via macro c'est d'arriver à extraire des données.
Par exemple, si je veux tous les animaux standards qui sont en catégorie junior femme, je fais un filtre avancé sur SJF.
Seulement, comme c'est une opération récurrente et dont les données de la base change fréquemment, je souhaite repartir de 0 à chaque fois.
Raison pour laquelle je fais une macro avec d'abord un effacement des filtres, puis un effacement des données et enfin, l'extraction.

Je bloque donc sur l'effacement des filtres. Si je n'ai pas fait de filtres avant ça coince. Je veux que Excel aille à la fonction suivante si l'effacement des filtres ne fonctionne pas ou s'il n'a pas lieu de se faire.

Un extrait de mon code :
VB:
sheets("SJF").Select
 
ActiveSheet.ShowAllData
 
Rows("2:1048576").Select
 
Selection.Clearcontents
 
Range("A2").Select

Ci-joint, mon fichier pour mieux comprendre

merci pour votre aide.

cdlt
 

Pièces jointes

  • Inscriptions Show.xlsm
    2.1 MB · Affichages: 30

aragdur

XLDnaute Junior

Merci pour les tableaux "style"

J'ai d'abord apporté les corrections pour les formules qui n'étaient pas identiques.
ça ne fonctionnait toujours pas ... J'ai donc fait une recopie sur toutes les cellules et là miracle ...
en fait, le pb était dû au verrouillage de certaines cellules et pas d'autres ... Excel est pointilleux !!!
 

aragdur

XLDnaute Junior

Merci pour ces précisions

Oublis de fichier ou je prends celui de vgendron (ci-joint) ?
 

Pièces jointes

  • Inscriptions Show.xlsm
    2.1 MB · Affichages: 35

aragdur

XLDnaute Junior
A vous deux, un grand merci tout d'abord.

questions sur les macros 1, 2 et 3.
j'imagine qu'elles sont essentielles. est-ce que ce sont des passives ?

je demande car je vais combiner les macros copie données, effacer donnees et filtre avancé.
 

aragdur

XLDnaute Junior

Je repensais à ton modèle de catalogue par concours.
l'idéal c'est aussi un modèle tout court puis je change sur Excel le lieu et la date

qu'en penses-tu ?
 

chris

XLDnaute Barbatruc
RE

Oui j'ai oublié ou fait une mauvaise manip. Je l'ai ajouté à mon post.
Tu verras les formules sont beaucoup plus courtes que les tiennes...

Dans un publipostage tu peux avoir au lancement 2 questions Date et lieu qui vont automatiquement remplir les zones prévues, c'est prévu par Word : champ Remplir.

Mais si tu veux filtrer ton concours il faut le faire dans Word si tu pars de l'ensemble de la base...
 

aragdur

XLDnaute Junior

Excellent !
c'est effectivement plus court
ce qui est cool avec Excel, c'est qu'il y a toujours des trucs à apprendre.

Punaise !!! Trop cool ce truc de Word.
Je vais effectivement m'en servir.

Merci beaucoup pour ton aide.

Je pense que je vais me tourner vers Word maintenant.
Le tableau tel qu'il est me convient.
 

vgendron

XLDnaute Barbatruc
Hellooo
à titre perso, c'est quoi le "truc avec Word? je trouve pas le fichier
pour les 3 macros, qu'appelles tu "Passives" ?
soit tu les regroupes dans une seule, ou elles s'appellent les unes les autres
ou meme tu fais une macro globale qui appelle les trois à la suite..
 

chris

XLDnaute Barbatruc
Bonjour

On l'a aussi (sur 2010 du moins pas revérifié sur 2016) dans l'onglet Publipostage avec le bouton Règles de la zone "champs d'écriture et d'insertion".

Ce ne sont pas des macros : juste des demandes qui se déclenchent à chaque fusion pour valoriser les champs qui ne viennent pas de la BD.
 

aragdur

XLDnaute Junior

je me suis fait une macro de tri, vous en pensez quoi ?

Un extrait de mon code :
VB:
Application.ScreenUpdating = False
For Each ws In Sheets
  If ws.Name <> "SJF" And ws.Name <> "SJM" And ws.Name <> "SSF" And ws.Name <> "SSM" And ws.Name <> "SVF" And ws.Name <> "SVM" Then
  With ws
    .Select
  .Sort.SortFields.Clear
  .Sort.SortFields.Add Key:=Range("F2:F11"), _
  SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
  "Junior femelle,Junior mâle,Senior femelle,Senior mâle,Vétéran femelle,Vétéran mâle" _
  , DataOption:=xlSortNormal
  .Sort.SortFields.Add Key:=Range("R2:R11"), _
  SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
  "Uni,Irish,Berkshire,Badger,Variberk,Husky Roan,Husky à bande,Hooded,Bareback,Capé,Albinos,Himalayen,Siamois,BES,Burmese,Devil" _
  , DataOption:=xlSortNormal
  .Sort.SortFields.Add Key:=Range("K2:K11"), _
  SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
  .Sort.SortFields.Add Key:=Range("I2:I11"), _
  SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
  End With
  End If
Next ws
Sheets("Accueil").Select
Application.ScreenUpdating = True
End Sub
 

aragdur

XLDnaute Junior
par contre comment l'intégrer à

VB:
For Each ws In Sheets
  If ws.Name <> "Accueil" And ws.Name <> "Tableau de saisie" And ws.Name <> "Tableau de données" Then
  With ws
  .UsedRange.AutoFilter
  .UsedRange.AutoFilter Field:=5, Criteria1:=Left(ws.Name, 1)
  .UsedRange.AutoFilter Field:=7, Criteria1:=Right(ws.Name, 2)
  Compteur = 0
  For Each ele In .UsedRange.Offset(1, 0).Columns(1).SpecialCells(xlCellTypeVisible)
  If ele.Offset(0, 1) <> "" Then
  ele.FormulaR1C1 = Compteur + 1
  ele.NumberFormat = "000"
  Compteur = Compteur + 1
  End If
  Next ele
  End With

avant le for each ele ?
 

Discussions similaires

Réponses
8
Affichages
892
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…