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

XL 2013 Code VBA

eutrophisation

XLDnaute Occasionnel
Bonjour,

SVP veuillez m'aider à combiner les 4 equipes et les années. Le code ci dessous ne fonctionne pas, je vous demande de vouloir bien apporter la correction appropriée. Je vous remercie.
Avoir une plage dans la feuille "Selection3" issue de la plage source "G4:Q20000" de la feuille nommée "Base" avec seulement les 4 équipes dont chacune est saisie dans sa cellule respective à savoir "A1" , A2"; "A3" ,"A4" et les trois années "H1" "H2" "H3" de la feuille nommée "Base". Enlever les filtres. Auparavant déproteger puis proteger.

Sub FiltrerEquipesEtAnnees()
Dim wsBase As Worksheet
Dim wsSelection3 As Worksheet
Dim equipe1 As String, equipe2 As String, equipe3 As String, equipe4 As String
Dim annee1 As String, annee2 As String, annee3 As String
Dim rngSource As Range, rngDestination As Range
' Déprotéger la feuille "Base"
Sheets("Base").Unprotect
' Définir les noms des équipes et des années
equipe1 = Sheets("Base").Range("A1").Value
equipe2 = Sheets("Base").Range("A2").Value
equipe3 = Sheets("Base").Range("A3").Value
equipe4 = Sheets("Base").Range("A4").Value
annee1 = Sheets("Base").Range("H1").Value
annee2 = Sheets("Base").Range("H2").Value
annee3 = Sheets("Base").Range("H3").Value
' Définir les feuilles source et destination
Set wsBase = ThisWorkbook.Sheets("Base")
Set wsSelection3 = ThisWorkbook.Sheets("Selection3")
' Définir la plage source
Set rngSource = wsBase.Range("G4:Q2000")
' Filtrer les données selon les critères des équipes et des années
rngSource.AutoFilter Field:=14, Criteria1:=equipe1, Operator:=xlOr, Criteria2:=equipe2, Operator:=xlOr, Criteria3:=equipe3, Operator:=xlOr, Criteria4:=equipe4
rngSource.AutoFilter Field:=8, Criteria1:=annee1, Operator:=xlOr, Criteria2:=annee2, Operator:=xlOr, Criteria3:=annee3
' Copier les données filtrées dans la feuille "Selection3"
Set rngDestination = wsSelection3.Range("A1")
rngSource.SpecialCells(xlCellTypeVisible).Copy
rngDestination.PasteSpecial Paste:=xlPasteAll
' Supprimer les filtres
rngSource.AutoFilter
' Protéger la feuille "Base"
Sheets("Base").Protect
' Protéger la feuille "Selection3"
Sheets("Selection3").Protect
End Sub
 

Oneida

XLDnaute Impliqué
Bonjour,
Pourquoi vous ne continuez pas sur votre post precedent?
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Que faut il faire pour améliorer ma demande d'aide auprès de vous?

Il est très pénible et souvent infructueux de vouloir corriger un code sans le fichier auquel il s'applique.

En général les répondeurs ont besoin :
  • du classeur avec le code et des données représentatives (par forcément toutes les données).
  • de savoir ce qui ne fonctionne pas dans le code : erreur, résultats incorrects, durée d'exécution beaucoup trop longue, etc.
  • si la macro aboutit à une erreur, connaitre l'erreur et connaitre l'instruction du code qui a provoqué l'erreur.
Bref, donnez du grain à moudre aux potentiels répondeurs et alors ils moudront et moulineront pour vous.
 

eutrophisation

XLDnaute Occasionnel
Bonsoir
J'ai réalisé un modèle de base de donnée réduite. Je vais pouvoir adapter la macro que j'espere que vous allez me la proposer à ma base de données constituées de 20 000 lignes et de 15 colonnes. Les plus importantes données sont situées dans la plage de la feuille "Base" G4:Q20000. Je souhaite regrouper les resultats de 4 equipes celles qui ont été sélectionnées à partir des listes déroulantes identiques à savoir A1,A2,A3 et A4 combinées aux années sélectionnées également à partir d'une liste déroulante à partir des listes déroulantes identiques à savoir H1,H2 et H3. La plage visible apres au niveau de la feuille "Base" est copiée et coller sur la feuille nommée "Selection3". De sorte que le tableau est constitué de 4 équipes avec leur resultats respectifs et les années sélectionnées,
Merci d'avance pour générosité et votre aide.
Ci joint fichier.
 

Pièces jointes

  • eutrophisationessai.xlsm
    789.5 KB · Affichages: 5

Oneida

XLDnaute Impliqué
Bonjour,
Dans votre fichier, vous avez une forme par "selection" avec un code specifique
Le code que vous presentez n'est pas dans votre fichier
Il semblerait que vous vouliez faire un filtre a 4 criteres pour une seule feuille
Pouvez expliquer
 

eutrophisation

XLDnaute Occasionnel
Bonjour
Les cellules A1,A2,A3 et A4 sont les critères de 4 équipes. Les cellules H1,H2 et H3 representent les années. Je souhaite avoir la plage visible coller dans la feuiille "Selection3". Les autres feuilles "Selection1" Selection2 et selection4 leur code respectif existent dans Affichage" puis macro. Il reste "Selection3" pour la requête ci dessus. Vous pouvez me faire des propositions, j'en serais ravi.
Cordialement votre.
 

eutrophisation

XLDnaute Occasionnel
Bonjour,
Tout d'abord, je tiens à vous remercier pour votre aide précieuse. Je constate qu'en cliquant sur la macro 1 (la vôtre), je n'obtiens pas le résultat escompté. De plus, toutes les requêtes des autres feuilles s'effacent d'une part, et d'autre part, je réalise que j'ai omis de mentionner un troisième critère dans ma demande. Il s'agit de la "Division", avec la cellule "G1".

Je vous serais reconnaissant de bien vouloir inclure ce critère dans le code VBA que vous avez développé pour moi. Encore toutes mes excuses pour cet oubli et merci d'avance pour votre compréhension et votre diligence. La plage visible doit être copiée et collée sur la feuille nommée "Selection3". Les autres feuilles ne sont pas concernées. Je souhaite faire en sorte qu'il y ait autant de feuilles que de requêtes. Aucune feuille n'est dépendante de l'autre. J'ai relevé dans le code des noms de feuilles. Chaque macro est concernée par la feuille nommée "Base" où sont extraites les données de la requête et collées sur la feuille appropriée. Dans le cas de votre code, elle est collée sur la feuille nommée "Selection3"
Salutations sportives
 
Dernière édition:

Oneida

XLDnaute Impliqué
Bonjour,
Chez moi rien ne s'efface
La macro 1 n'est pas de moi, il semblerait que ce soit vous qui ait pondu la chose a l'insu de votre plein gre.
Voir le fichier que vous avez mis au post#5
De plus pour activer le code de la subroutine FiltrerEquipesEtAnnees() pour selection3, il vous suffit de faire un click sur la forme Selection3 de la feuille Base comme pour 1,2
Je rajoute division. Quoique avec le code de Sub FiltrerEquipesEtAnnees(), vous pourriez le faire vous meme
Penser a devrouiller la cellule Division
 

eutrophisation

XLDnaute Occasionnel
Bonjour,
En effet, vous avez tout à fait raison, j'ai cliqué sur mes macros. Cependant, en réalisant les filtres manuellement en commençant évidemment par les équipes de football, puisque ce sont eux dont il s'agit de voir en premier (A1, A2, A3, A4), ensuite les années, j'ai observé que la plage réalisée manuellement est différente de celle réalisée par la macro. En effet, lorsque je commence par filtrer les années manuellement et que je passe aux équipes par la suite, le résultat obtenu par la macro est identique à celui fait manuellement. Je souhaiterais que la macro commence par les clubs, ensuite par les années. Je vous prie de bien vouloir revoir le code en tenant de mes preoccupations. Votre code fonctionne parfaitement, cependant il faudrait qu'il commence par filtrer les équipes A1 A2 A3 et A4.
Cordialement votre.
 
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…