Sélection de cellules dynamique

Bonjour,

je ne sais pas si une question similaire a déjà été posée alors je me lance !

j'ai un fichier dans lequel j'enregistre des données tous les mois. celui-ci se compose de la manière suivante:

1 onglet par secteur géographique

dans chaque onglet 1 tableau pour chaque mois (les tableaux sont les uns en dessous des autres)

je voudrais copier toutes mes données dans un autre fichier (nommé Recap) à la fin de chaque mois.

mon problème est comment sélectionner uniquement le bon tableau, celui du mois en cours, et pas tous les tableaux de la feuille ?

est-il possible d'avoir une fonction pour sélectionner uniquement les données contenues dans la zone d'impression (je travaille avec un affiche en aperçu de saut de page) ?

merci pour votre aide

Bonjour luluval,

Pour répondre à ton problème, je procèderais de la façon suivante:

  • Nommage des tableaux mensuels avec une référence aux mois du type "TableauA_01", "TableauA_02"..."TableauA_12" sur tous les ong
  • Une fonction VBA recevant le mois voulu en paramètre et recopiant toutes les plages nommées comportant ce numéro de mois comme derniers caractères de son nom.

Bonjour GVIALLES,

Merci pour ta réponse.

J'ai en effet nommé mes tableaux en fonction du mois comme tu le suggères. Par contre est-il possible d'incrémenter le mois automatiquement dans ma fonction VBA ? je ne voudrais pas me retrouver avec 12 macros (1 pour chaque mois) et je ne sais pas comment faire...

Voici mon code à l'heure actuelle:

Sub CreationSynthese()

ChDir "C:\Users\l.valette\Desktop\test"

ClasseurEncombrant = Dir("C:\Users\l.valette\Desktop\test\*.xlsx")

While Len(ClasseurEncombrant) > 0

Workbooks.Open ClasseurEncombrant

Sheets("GDR Boucanet").Range("mars").Copy

Workbooks("RDV_ENC_Recap.xlsm").Activate

DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1

Range("B" & ActiveSheet.UsedRange.Rows.Count + 1).Select

ActiveSheet.Paste

Range("A" & DebutNomFichier & ":A" & ActiveSheet.UsedRange.Rows.Count) = ClasseurEncombrant

Workbooks(ClasseurEncombrant).Close

ClasseurEncombrant = Dir

Wend

Columns("A:A").Replace "RDV_ENC_", ""

Columns("A:A").Replace ".xlsx", ""

End Sub

Bonjour Luluval,

Dans le code VBA que tu donnes, je ne retrouve pas exactement le problème tel que tu l'as soumis primitivement :

- Il produit une boucle sur les classeurs stockés dans le dossier "Test" mais pas sur les onglets comme indiqué dans la question initiale.

Si tu conserves le code tel quel, pour éviter tes 12 macros, il suffit que tu rajoutes un paramètre à ta macro "CreationSynthese" et que tu te réfère à ce paramètre dans le code :

genre :

Sub CreationSynthese(zMois As String)

    ChDir "C:\Users\l.valette\Desktop\test"
    ClasseurEncombrant = Dir("C:\Users\l.valette\Desktop\test\*.xlsx")
    While Len(ClasseurEncombrant) > 0
        Workbooks.Open ClasseurEncombrant
        Sheets("GDR Boucanet").Range(zMois).Copy 'On remplace le mois en dur par le paramètre
        Workbooks("RDV_ENC_Recap.xlsm").Activate
        DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
        Range("B" & ActiveSheet.UsedRange.Rows.Count + 1).Select
        ActiveSheet.Paste
        ange("A" & DebutNomFichier & ":A" & ActiveSheet.UsedRange.Rows.Count) = ClasseurEncombrant
        Workbooks(ClasseurEncombrant).Close
        ClasseurEncombrant = Dir
    Wend

    Columns("A:A").Replace "RDV_ENC_", ""
    Columns("A:A").Replace ".xlsx", ""

End Sub
Sub AppelCreationSynthese()
    Dim dDate As Date
    Dim sMois As String
    'Si le mois à récupéré est le mois en cours

    dDate = Now()
    sMois = Format(dDate, "mmmm")

    CreationSynthese (sMois)

End Sub

Code non testé

Rechercher des sujets similaires à "selection dynamique"