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 SubCode non testé