XL 2013 Macross supprimant les données de cellule en dehors d'une période définie dans deux autres cellules

MarineU

XLDnaute Nouveau
Bonjour,

Je cherche une macro venant supprimer des données de plusieurs colonne qui ne correspondent pas à une période définies dans deux autres cellules.

Le fichier est un calendrier (planning) s'étalant de septembre à septembre. J'ai besoin de deux macros venant supprimer des données sous conditions :
La première macro hors cycle total :
- Le planning est défini pour un cycle du 01/09/24 au 01/07/25 (dates elles mêmes définies dans la cellule BU5 et BU7 et qui peut donc évoluée en fonction du besoin). La macro doit donc analyser ce cycle et supprimer toutes les données indiquées dans le planning hors cycle. En gros si j'ai des données pour 08/25 et 09/25 la macro doit les supprimer. Les données sont contenues dans 2 colonnes par mois (atelier et réunion). Bouton vert dans le fichier.

La deuxième macro horscycle réunion :
Doit faire la même chose mais uniquement pour les colonnes réunion hors cycle. (bouton rouge dans le fichier).

Pour comprendre la période hors cycle vous pouvez tester le bouton réinitialiser le planning hors période du cycle violet (partie Atelier), cette macro fonctionne. J'aimerai donc la dupliquer pour les colonnes réunion (macro2) et une autre pour quelle supprime les deux réunion+atelier (macro1).

Ci joint le fichier.

Merci à vous,
 

Pièces jointes

  • 2024-planning-distinction-v3.xlsm
    198.7 KB · Affichages: 6
Solution
Bonjour le forum,

En remplaçant la virgule par le point plus besoin de convertir, Excel s'en charge :
VB:
  Dim heure As String
  Do
    heure = InputBox("Saisir le nombre d'heures à affecter :" & vbCrLf & "Pour le(s) : " & joursListe, _
                     "Nombre d'heures")
    ' remplacement des "," en "." automatiquement
    heure = VBA.Replace(heure, ",", ".")
  
  Loop Until Val(heure) > 0
A+

vgendron

XLDnaute Barbatruc
Hello

ton planning est plutot compliqué dans sa construction avec des formules inutiles qui rallentissent les calculs

en attendant, sans y toucher
il faut juste créer la plage nommée "Planning" =A20:BZ50

VB:
Sub ResetHorsPeriode()
Application.Calculation = xlCalculationManual

With Sheets("PlanningCycleComplet")
    Debut = .Range("BU5")
    Fin = .Range("BU7")
    With .Range("Planning")
        For mois = 1 To 13 'pour chaque mois du planning
            For j = 1 To 31 'pour chaque jour
                jour = .Cells(j, (mois - 1) * 5 + mois + 2)
              
                If Not (jour >= Debut And jour <= Fin) Then
                    .Cells(j, (mois - 1) * 5 + mois + 2).offset(,2).resize(,2) = ""
                End If
            Next j
        Next mois
    End With
End With
Application.Calculation = xlCalculationAutomatic
End Sub
 
Dernière édition:

vgendron

XLDnaute Barbatruc
En PJ, un exemple de "simplification" pour le planning
1) il n'y a plus que 4 colonnes (2 pour le jour et "si férié" + 2 pour réunion/Atelier) ==> plus de colonnes cachées qui ne servent pas à grand chose

2) quand tu mets une date de "Début" en F2
==>Le planning se met à jour en utilisant "Début" comme premier jour en A19 (la.. ca oblige de mettre une date de début au 1er du mois

3) les formules du planning sont plus simples

==> ensuite les macros
dans le module "mReset"
ResetAllPlanning ==> efface toutes les colonnes "Réunion / Atelier"
ResetHorsPériode ==> efface pour les jours Hors période définie par "Début" = F2 et "Fin"=F4

Dans la feuille "Paramétrage", les données (du moins une partie) sont sous forme de table Structurée (t_Param)
ca sert dans les formules du planning

je me suis permis d'ajouter aussi un petit tableau qui calcule les jours fériés en fonction de l'annee (ca reprend le tient, mais plus propre)

dans la feuille "Vacances Scolaire", j'ai aussi ajouté des tableaux que j'utilise pour définir les périodes
==> si on sait que il y a une rotation entre les zones A B C pour savoir laquelle part en premier en fonction de l'année, il suffit de ne remplir QU'UNE zone

au vu de toutes tes macros.. je présume que tu as posté un fichier incomplet. en supprimant quelques données..?

si tu veux, on peut "optimiser et simplifier le tout
 

Pièces jointes

  • 2024-planning-distinction-v4.xlsm
    196.1 KB · Affichages: 6

vgendron

XLDnaute Barbatruc
Re,

en PJ, je te mets un fichier que j'utilise pour mes congés, au cas où ca peut t'inspirer pour créer le calendrier (avec des barres pour visualiser les vacances scolaires des 3 zones)
et pour créer/remplir les tableaux des vacances scolaires
 

Pièces jointes

  • Calendrier.xlsm
    106.1 KB · Affichages: 5

MarineU

XLDnaute Nouveau
Bonjour,

Je reviens à la charge avec le fichier excel, tous les boutons macros sont opérationnels. Toutefois lorsque j'indique un nombre décimal (en utilisant le point ou la virgule peut importe) le total en bas du tableau ne se fait pas. Le total se fait uniquement lorsque j'indique des nombres entiers.
 

Pièces jointes

  • V4 - Planning distinction.xlsm
    133 KB · Affichages: 7

job75

XLDnaute Barbatruc
Bonsoir,
Toutefois lorsque j'indique un nombre décimal (en utilisant le point ou la virgule peut importe) le total en bas du tableau ne se fait pas. Le total se fait uniquement lorsque j'indique des nombres entiers.
En cliquant sur les boutons vous entrez des textes alors qu'il faut des nombres.

Donc dans la macro nJourSemaine (Module6) remplacez :
VB:
currentDay.Offset(0, offsetCol).Value2 = heure
par :
VB:
currentDay.Offset(0, offsetCol) = CDbl(heure)
A+
 

Pièces jointes

  • V4 - Planning distinction.xlsm
    124.5 KB · Affichages: 0

job75

XLDnaute Barbatruc
Bonjour le forum,

En remplaçant la virgule par le point plus besoin de convertir, Excel s'en charge :
VB:
  Dim heure As String
  Do
    heure = InputBox("Saisir le nombre d'heures à affecter :" & vbCrLf & "Pour le(s) : " & joursListe, _
                     "Nombre d'heures")
    ' remplacement des "," en "." automatiquement
    heure = VBA.Replace(heure, ",", ".")
  
  Loop Until Val(heure) > 0
A+
 

Pièces jointes

  • V5 - Planning distinction.xlsm
    124.5 KB · Affichages: 0
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
315 087
Messages
2 116 084
Membres
112 655
dernier inscrit
fannycordi