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

Autres macros Excel

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 !

Cheminotbelgiantrain

XLDnaute Junior
Bonjour tout le monde , tout d'abord je vous remercie pour ce forum pour résoudre différents problèmes confrontés lors de création des macros en Excel . je viens de m'inscrire aujourd'hui car je voulais comprendre beaucoup mieux ce programme pour trouver des solutions avec vos soutiens bien sûr à des questions sur les macros.
ma question d'aujourd'hui est la suivante:
je cherche à créer automatiquement un onglet à partir d'une première feuille et lui donner le nom avec la date du jour sous la forme jj-mm-aaaa.
le contenu de la feuille jj-mm-aaaa doit être sauvegardé et recopié dans la feuille jj+1-mm-aaaa.
ce travail est journalier !!
d'avance merci pour votre aide !
 
super !!! je l'ai ouvert sans Macros car c'est un PC du boulot !.
il m'a l'aire très très bien ✌️!!!
j'aurai besoin de quelques explications si possible !? soit par téléphone ou via teams par exemple ! possible ?
Bonsoir le Fil
Une version inspirée du fichier de @TooFatBoy
Bonne fin de Soirée
Jean marie
merci beaucoup papy 😇 !! il m'a l'aire très bien aussi !!
je suis vraiment soutenu par des pros !!! merci beaucoup les gars 🙏🙏🙏.
comment pourrais je avoir quelques explications par rapport à ce que vous avez fait ? car comme je l'ai signalé je découvre Excel et j'aimerai bien apprendre pour me faciliter les quelques taches quotidiennes !!!!
 

Re
Le fichier sur lequel j'ai travaillé!
Bonne fin de Soirée
Jean marie
bonsoir ,
je reviens vers toi pour la modification que tu as faite à partir du fichier de notre camarade TooFatBoy est très intéressante dans le sens où tu affiche juste la feuille de la semaine en cours. mais quand je l'ouvre voici ce qu'il me donne:

je n'arrive pas à avoir le menu déroulant des lundis et quand j'ai changé la date au B2 ,D3 et D4 il affiche ce qui est en haut.
tu as fait une macros pour ce fichier ? si oui laquelle stp ?
 


🙏 🙏 🙏
 
Re
Je viens de Lire et tu dis :
"je n'arrive pas à avoir le menu déroulant des lundis et quand j'ai changé la date au B2 ,D3 et D4 il affiche ce qui est en haut."
tu dis : "et quand j'ai changé la date au B2 ,D3 et D4"
Tu n'as pas a changer les dates , tu as Juste à sélectionner la semaine dans le Combobox.
les dates se mettent automatiquement .
Oui il y a des macros Lol
Tu Clicques droit sur le Nom de la feuille "BDD" et tu selectionnes : "Visualiser le Code" et tu verras "
VB:
Private Sub CBx_Semaines_Change()
With Worksheets("BDD")
    ' Année concernée
     Anne_Select = Year(Date) ' Remplacez par l'année souhaitée
    ' Définir les dates
    Premier_Jour_Annee = DateSerial(Anne_Select, 1, 1) ' Premier jour de l'année cible
     Dernier_Jour_Annee = DateSerial(Anne_Select, 12, 31) ' Dernier jour de l'année cible
   
      With .CBx_Semaines
                      Lundi_Semaine = .List(.ListIndex, 1) 'on récupére le Lundi de la semaine
        Lundi_Semaine_Suivante = .List(.ListIndex, 2) 'on récupére le Lundi de la semaine suivante
                       Num_Semaine = .List(.ListIndex, 3) 'on récupére le Numéro de la semaine
      End With
   
      .Range("B2") = Date 'On colle la date du Jour
      .Range("C3") = Premier_Jour_Annee 'On colle la date du premier jour de l'année
      .Range("C4") = Dernier_Jour_Annee 'On colle la date du dernier jour de l'année
 
   
      .Range("D3") = CDate(Lundi_Semaine) 'On colle la date du premier de la semaine concernée
      .Range("D3").NumberFormat = "dddd dd mmmm yyyy" ' On formate la date
   
      .Range("D4") = CDate(Lundi_Semaine_Suivante)
      .Range("D4").NumberFormat = "dddd dd mmmm yyyy" ' On formate la date
   
      .Range("I4") = "Semaine - " & Format(Num_Semaine, "00") ' On colle et on formate le Numéro de la semaine
      .Range("B2").Select
End With
'*********************************************************
                 Filtrage Lundi_Semaine, Lundi_Semaine_Suivante 'On passe les deux dates en argument de la Procédure
'*********************************************************
End Sub
Ensuite de cette procédure qui traite la selection d'une ligne dans le Combobox "CBx_Semaines" Tu peux accéder au Code de la procédure "Filtrage" il te faut cliquer droit sur le Nom de cette Procédure puis de choisir "Définition" tu aura ainsi le Code de cette Procédure soit qui se trouve dans le Module nommé "Mdl_Filtrage" :
Code:
Option Explicit
Public Function Filtrage(Lundi_Semaine As Date, Lundi_Semaine_Suivante As Date) As Boolean
Dim LigneFiltre As Range
Application.ScreenUpdating = False
    On Error GoTo ErrorHandler
    ' Définir la feuille et la plage des données dynamiquement
    Set Ws_Cible = Worksheets("BDD")
    With Ws_Cible
    Set PlageFiltre = .Range("B6:N" & .Cells(.Rows.Count, "B").End(xlUp).Row) ' Trouve la dernière ligne automatiquement
    ' Désactiver les filtres existants
    If .AutoFilterMode Then .AutoFilterMode = False
    ' Appliquer le filtre
    With PlageFiltre
            .AutoFilter Field:=1, _
                    Criteria1:=">=" & Format(Lundi_Semaine, "mm/dd/yyyy"), _
                    Operator:=xlAnd, _
                    Criteria2:="<=" & Format(Lundi_Semaine_Suivante, "mm/dd/yyyy")
    End With
    ' Vérifier si des lignes sont visibles après filtrage
    If .AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count > 1 Then
        Filtrage = True
    Else
        MsgBox "Aucune ligne ne correspond aux critères de filtre.", vbInformation
        Filtrage = False
    End If
End With
Application.ScreenUpdating = True
Exit Function
ErrorHandler:
    ' Gestion des erreurs
    MsgBox "Erreur : " & Err.Description, vbExclamation
    Filtrage = False
End Function
Tu as aussi du Code dans le Module "Mdl_AlimenterComboBoxSemaines"
Code:
Option Explicit
    Public x As Byte
    Public Indx As Byte
    Public Ws_Cible As Worksheet
    Public CBx As Object
    Public PlageFiltre As Range
    Public Anne_Select As Integer
    Public Premier_Jour_Annee As Date
    Public Dernier_Jour_Annee As Date
    Public Lundi_Semaine As Date
    Public Lundi_Semaine_Suivante As Date
    Public Num_Semaine As Byte
    Public Detail_Semaine As String
    Public Premier_Lundi As Date
    Public Semaine_Actuelle As Byte
    Public Str_Semaine$
 

Sub AlimenterComboBoxSemaines(Anne_Select As Integer)
    ' Référence à la feuille contenant le ComboBox
    Set Ws_Cible = ThisWorkbook.Worksheets("BDD")
                x = 0
    ' Référence au ComboBox sur la feuille
    Set CBx = Ws_Cible.OLEObjects("CBx_Semaines ").Object ' Assurez-vous que le nom est correct
    'Semaine actuelle
        Semaine_Actuelle = WorksheetFunction.IsoWeekNum(Date) ' Numéro de semaine ISO
    ' Définir les dates
    Premier_Jour_Annee = DateSerial(Anne_Select, 1, 1) ' Premier jour de l'année cible
     Dernier_Jour_Annee = DateSerial(Anne_Select, 12, 31) ' Dernier jour de l'année cible
 
    ' Trouver le premier lundi de l'année
    Premier_Lundi = Premier_Jour_Annee - Weekday(Premier_Jour_Annee, vbMonday) + 1 ' Trouver le premier lundi de janvier

    ' Inclure la semaine 52 de l'année précédente si elle contient les 1er et 2 janvier
    If Weekday(Premier_Jour_Annee, vbMonday) <> 1 Then
        ' La semaine 52 de l'année précédente commence le lundi 25 décembre 2023
        Lundi_Semaine = DateSerial(Anne_Select - 1, 12, 25) ' Dernier lundi de l'année précédente
    Else
        ' Si la semaine 1 commence normalement
        Lundi_Semaine = Premier_Lundi
    End If
    With CBx
    ' Nettoyer le contenu existant du ComboBox
              .Clear
    ' Définir le nombre de colonnes du ComboBox
              .ColumnCount = 4 ' On définit le Nombre de Colonnes
              .ColumnWidths = "1;0;0;0" ' On définit la largeur des colonnes (1 visible)
              .ListRows = 10 'On définit le Nombre de Lignes affichées
   End With
 
    ' Parcourir les semaines et remplir le ComboBox
    Do While Lundi_Semaine <= Dernier_Jour_Annee
 
        Num_Semaine = WorksheetFunction.IsoWeekNum(Lundi_Semaine) ' Numéro de semaine ISO
   If Num_Semaine = Semaine_Actuelle And Year(Lundi_Semaine) = Year(Date) Then
         Indx = x
    Str_Semaine = "S-[" & Num_Semaine & "]" 'on formate l'affichage de la semaine si semaine en cours
          Else
    Str_Semaine = "S-" & Format(Num_Semaine, "00") 'on formate l'affichage de la semaine si semaine autre
   End If
        Detail_Semaine = Application.Proper(Trim(Format(Lundi_Semaine, "dddd dd mmmm yyyy")) & " au " & _
                       Trim(Format(Lundi_Semaine + 6, "dddd dd mmmm yyyy")) & _
                       "   " & Str_Semaine) 'On définit le texte à afficher dans la première colonne du Combobox des Semaines
     
        ' Ajouter les informations dans le ComboBox
      With CBx 'Avec La Combobox des Seamines
              .AddItem Detail_Semaine 'On colle le Texte des Limites de chaque semaines
              .List(.ListCount - 1, 1) = CDate(Lundi_Semaine) ' On colle le  le Lundi de la semaine
              .List(.ListCount - 1, 2) = CDate(Lundi_Semaine + 7) ' On colle le Lundi de la semaine suivante
              .List(.ListCount - 1, 3) = Num_Semaine 'On colle le numéro de la semaine considérée
        x = .ListCount 'on récupére l'index de la semaine qui est ajoutée
      End With
         
        Lundi_Semaine = Lundi_Semaine + 7 ' On Passe au Lundi de la semaine suivante
    Loop
             CBx.ListIndex = Indx 'on affiche la semaine en fonction de l'Index définit 0 ou semaine en Cours         
End Sub
j'y ai mis des commentaires à presque chaque Ligne .
tu vois et tu n'hésite pas !
Jean marie
 
Dernière édition:

hello jean marie ! mille merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
en fin j'ai réussi à mettre en route ton fichier !! il est en essai et il est très bien fait 👌 chapeau !!!
je suis entrain de comprendre le programme avec les commentaires que tu as mis sur les macros.
pour le menu déroulant avec les les lundis des semaines = il va changer automatiquement pour 2025 avec la date du système ??
👍👍👍👍👍👍
 
Bonsoir Le Fil
Oui car il y a cette procédure dans le Thisworkbook du Classeur !
VB:
Private Sub Workbook_Open()
Application.ScreenUpdating = False
        AlimenterComboBoxSemaines Year(Date) 'On passe l'année de la date du jour en Argument de la procédure
End Sub
Donc c'est a partir de la date du Jour que le Combobox des semaines est mis a jour .
n'hésite pas si besoin!
bonne fin de Soirée
Jean marie
 
Dernière édition:
hello Papy 😇 , merci infiniment !!!!🙏🙏🙏🙏🙏🙏🙏🙏
bon dimanche et à + !!!
salut camarade 😇 ! merci infiniment !!!🙏🙏🙏🙏🙏🙏🙏🙏
un bon dimanche !!! et à +
 
- 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

Réponses
7
Affichages
305
Réponses
1
Affichages
251
Compte Supprimé 979
C
  • Question Question
Microsoft 365 erreur de date
Réponses
2
Affichages
455
T
  • Résolu(e)
Microsoft 365 pb effacement macro
Réponses
8
Affichages
459
Themax
T
Réponses
2
Affichages
346
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…