demande d'explication du code

  • Initiateur de la discussion Initiateur de la discussion bpol
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bpol

XLDnaute Impliqué
Re le forum,

voici un code:
Sub Imprime()
Application.ScreenUpdating = False
With Sheets("Feuil2")
.Range("A1:C" & .[A65000].End(xlUp).Row).Name = "base"
Range("B2").FormulaR1C1 = "=TEXT(Feuil2!RC[-1],""mmmm"")=R2C1"
.Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"B1:B2"), CopyToRange:=Range("D1:F1"), Unique:=False
[B2].Clear
End With
With ActiveSheet
.PageSetup.PrintArea = "$D:$F"
.PrintPreview
End With
End Sub
afin d'essayer de comprendre,
j'aurai souhaité savoir ou se situe ces cellules


BPOL
 

Pièces jointes

Re : demande d'explication du code

Bonjour,

Pourrais-tu, une prochaine fois utiliser la balise 'Code' (bouton # dans l'éditeur des post) avant de coller tes lignes de macro, pour plus de lisibilité.

Code:
Sub Imprime()
Application.ScreenUpdating = False
With Sheets("Feuil2")
    'Définit la plage des données à extraire de Feuil2!A:C (dernière ligne non vide)
    .Range("A1:C" & .[A65000].End(xlUp).Row).Name = "base"
    'Définit le critère dans Feuil1 par formule
    '=TEXTE(Feuil2!A2;"mmmm")=$A$2
    Range("B2").FormulaR1C1 = "=TEXT(Feuil2!RC[-1],""mmmm"")=R2C1"
    'Lance l'extraction des données de feuil2 à partir
    'des critères de feuil1!B1:B2
    'vers feuil1!D1:F1
    .Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "B1:B2"), CopyToRange:=Range("D1:F1"), Unique:=False
    'efface la formule précédement rentrée en feuil1!B2
    [B2].Clear
End With
'Lance l'impression des données extraites (aperçu avant impression)
With ActiveSheet
    .PageSetup.PrintArea = "$D:$F"
    .PrintPreview
End With
End Sub

A+
 
Re : demande d'explication du code

Bonjour bpol et le forum

Quelques explications dans la macro :

Sub Imprime()
' Désactivation de l'affichage
Application.ScreenUpdating = False
' Feuille dans laquelle s'exécute la macro
With Sheets("Feuil2")
' Définition d'une plage nommée, à noter que les crochets remplacent range("A65000")
.Range("A1:C" & .[A65000].End(xlUp).Row).Name = "base"
' Mise en place d'une formule dans la cellule B22
Range("B2").FormulaR1C1 = "=TEXT(Feuil2!RC[-1],""mmmm"")=R2C1"
' Report des résultats du filtrage de la base avec les critères B1:B2 vers D1:F1
.Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("B1:B2"), CopyToRange:=Range("D1:F1"), Unique:=False
' Effacement de la formule en B2
[B2].Clear
End With
' Impression des résultats présents en D1:F1
With ActiveSheet
.PageSetup.PrintArea = "$D:$F"
.PrintPreview
End With
End Sub

Edit : Bonjour Hasco
 
Dernière édition:
Re : demande d'explication du code

RE,
merci CBernardT mais encore une petite question tu anotes:

Report des résultat du filtrage de la base avec les critères B1:B2 vers D1:F1
pour:

.Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("B1:B2"), CopyToRange:=Range("D1:F1"), Unique:=False

mais dans le fichier que j'avais joins les critères de sélection sont en A1 et A2

c'est surtout çà que me déroute.

Encore Merci

BPOL
 
Re : demande d'explication du code

Re,

Je ne vois pas bien ce que tu veux dire ?

Si tu souhaites que les critères de filtrage soient A1 et A2 alors change la partie suivante :

CriteriaRange:=Range("B1:B2") par CriteriaRange:=Range("A1:A2")
 
Re : demande d'explication du code

Re,

Dans ta Feuil1 tu as une liste en A2 tu as une liste des noms de mois.
Dans ta feuil2 tu as en colonne A des dates.

La macro prépare un critère calculé (formule) en Feuil1!B2 qui va retourner VRAI ou Faux pour savoir si les dates de la colonne A de Feuil2, formatée en "mmmm" (nom de mois) correspondent (Vrai ou faux) au mois indiqué dans la feuil1!B2.

C'est le resultat de Feuil1!B2 qui est important pas Le nom du mois tel qu'il apparait en Feuil1!A2.

Dans la macro commente la ligne: [B2].Clear en mettant une apostrophe simple devant la ligne(')

Lance la macro et regarde dans la cellule Feuil1!B2 la formule qui est mise par la macro.

Regarde l'aide excel sur les champs calculé d'extraction.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

K
Réponses
3
Affichages
929
L
Réponses
9
Affichages
1 K
Réponses
1
Affichages
729
Réponses
1
Affichages
1 K
Réponses
13
Affichages
1 K
Retour