Supprimer les colonnes de Week End - (aléatoires)
Bonjour,
je travaille sur un planning de saisie d'activités. Il est basé sur un planning perpétuel (Excelabo) qui génère des onglets du mois à saisir. Avec des mises en forme conditionnel, j'ai grisé les colonnes concernat les Week End et Jr fériés , mais je préfèrerai que les colonnes WE soient carrément supprimés.
Je suis complètement débutante et je n'ai rien trouvé sur le net. Je ne sais même pas par quel bout commencer...
A la rigueur, on pourrait se contenter de masquer les collonnes ou de les réduires ?
Je vous joins un fichier .
NB : Apartir de la feuille menu, on détermine l'onglet/mois à créer, qui met à jour la feuille Planning qui sert de modèle à la création des onglets.
Merci pour votre aide et svp, merci de détailler le code, afin que je le comprenne (je suis en auto formation)
Bonjour
Modifies cette macro (dans le code de l'userform)
Private Sub CommandButton25_Click()
'Mise à jour du planning avant affichage
Call CopyDuModele
End Sub
Modifies cette macro (Module1)
Tu remettras le code qui teste si la feuille existe
'CREATION DES NOUVEAUX ONGLETS
Sub CopyDuModele()
Dim I As Integer
Application.ScreenUpdating = False
'Copie de la feuille modèle 'Planning' avant elle-même
Worksheets("Planning").Copy Before:=Worksheets("Planning")
With ActiveSheet
'attribuer à la feuille active, le nom de la cellule A2
.Name = Format([a2].Value, "mm-yy")
' Suppression de la formule
.Range("B3:B4").Value = .Range("B3:B4").Value
' Masquer les colonnes
For I = 3 To 33
If Weekday(.Cells(3, I), vbMonday) > 5 Then .Columns(I).Hidden = True
Next I
End With
End Sub
Merci Banzai,
Je maîtrise pas bien encore les conditions, mais je ne désespère pas, le pb c'est prendre le temps d'apprendre tout ou d'apprendre par l'exemple...
tu as écrits :
' Masquer les colonnes
For I = 3 To 33
If Weekday(.Cells(3, I), vbMonday) > 5 Then .Columns(I).Hidden = True
Next I
en regardant sur l'aide la fonction Weekday, il est dit qu'elle renvoie les valeurs 1 pour dimanche et 7 pour samedi or, toi, tu dis vbMonday)>5 ; là je ne comprends pas, si tu peux m'expliquer la logique, ce serait sympa.
Je te copie le code de la procédure des onglets, car j'ai un bug. Avant la modif des colonnes, quand j'essayais de créer un onglet déjà existant, il ne se passait rien, maintenant j'ai une erreur d'exécution '1004' qui renvoie sur
.Name = Format([a2].Value, "mm-yy")
Je sais que j'ai gardé un de tes bouts de code quand j'ai supprimé le tri des onglets et je ne sais pas où / comment renvoyer une msgbox "Mois déjà existant".
Si tu peux m'aider encore
'//////////////////////////////
'CREATION DES NOUVEAUX ONGLETS
Sub CopyDuModele()
Dim I As Integer
'Se positionner en haut du tableau
Range("A1").Select
' Vérification si la feuille que l'on doit créer n'existe pas
If FeuilleExiste(Format(Sheets("Modèle").Range("MoisCourant"), "mm-yy")) = False Then
Application.ScreenUpdating = False ' Bloque le raffraichissement écran
End If
'Copie de la feuille modèle 'Modèle' avant elle-même
Worksheets("Modèle").Copy Before:=Worksheets("Modèle")
With ActiveSheet
'attribuer à la feuille active, le nom de la cellule A2
.Name = Format([a2].Value, "mm-yy")
' Suppression de la formule =DATE(ChoixAn;ChoixMois;1)) contre sa valeur
.Range("B3:B4").Value = .Range("B3:B4").Value
' Masquer les colonnes
For I = 3 To 33
If Weekday(.Cells(3, I), vbMonday) > 5 Then .Columns(I).Hidden = True
Next I
'Colorer l'onglet en bleu
.Tab.ColorIndex = 33
End With
End Sub
à toute fins utiles, je renvoie un fichier avec toutes les modifs.
Merci
Bonjour
If Weekday(.Cells(3, I), vbMonday) > 5 Then .Columns(I).Hidden = True
vbMonday est le code retour
Lundi aura le chiffre 1, Mardi le 2 etc ....
Donc Samedi = 6 et Dimanche = 7
Dans le fichier un extrait de l'aide sur JOURSEM
A vérifier
Bonsoir Banzai,
Merci pour toutes ses explications ; j'ai un peu honte pour la msgbox...
Tout est ok, merci