Bonjour eric
Envoyé par
Eric KERGRESSE
Il vous faut seulement changer de nom à l'onglet 2114 dans le fichier 2 pour qu'il devienne "Semaine en cours". A vous de sauvegarder l'onglet chaque semaine (ou de créer une macro qui gère le changement). Pour les tableaux structurés, vous en créez 3 : 1 pour le nom, 1 pour la date, 1 pour le statut. Il faut simplement qu'ils aient le même nombre de lignes, la boucle I sera la même pour les 3.
Je souhaite que cette macro suive l'onglet de la semaine courante du fichier1 et compare la meme semaine courante sur la cible ( le fichier2.xlsm)
J'avais pensé a un code comme ceci
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Sub VerifOnglet()'programme principal
Dim myArray As Variant, Nom as Variant 'déclaration des variables
myArray = Array("2114", "2115", "2116", "2117") 'création d'une variable dite Array avec 2 valeurs
For Each Nom In myArray 'boucle dans la variable Array
If TestOnglet(Nom) = False Then 'Test appelant la fonction
Sheets.Add after:= Sheets(Sheets.Count)'si le test n'est pas vérifié alors un nouvel onglet est créé en dernière position
ActiveSheet.Name = Nom 'le nouvel onglet prend le nom de la valeur testée
End If 'fin de la condition
Next Nom 'appel de l'élément suivant de l'Array
End Sub
Function TestOnglet(Nom As Variant) As Boolean 'sous programme
On Error Resume Next 'désactive l'éventuel message d'erreur
TestOnglet = Sheets(Nom).Name <> "" 'code du test
On Error GoTo 0 'réactive le contrôle des erreurs
End Function |
Pour vérifier et créer mes differents onglets si absent nommés au N° de semaine (format YYWW)
ensuite pour déterminer le N° de semaine ca
1 2 3 4 5 6 7 8 9
| Sub Semaine_en_cours()
Dim prem_date as single
Dim nb_date_année as integer
nb_date_année=DateValue("1 Janvier"&(Year(Date)))
prem_date=nb_date_année
num_semaine=Abs(Date- prem_date)/7
Range("A1").Value="21"&""& num_semaine
End sub |
et enfin pour créer le tableau structuré dans l'onglet de la semaine courante
1 2 3 4 5 6 7
| Sub créeTableaustructuré()
Sheets("2115").ListObjects.Add(xlSrcRange,Range("A1:A100"), , xlYes).Name ="T_Nom"
Sheets("2115").ListObjects.Add(xlSrcRange,Range("b1:A100"), , xlYes).Name ="T_Maj fichier 2"
Sheets("2115").ListObjects("T_Nom").TableStyle="TableStyleMedium14"
Sheets("2115").ListObjects("T_Maj fichier2").TableStyle="TableStyleMedium14"
End sub |
Peux etre dois je transformer le module standard pour trouver la semaine en cours en fonction ( function semaine en cours).
Ensuite je pense qu'il faut agir sur la variable
myArray = Array("2114", "2115", "2116", "2117")
afin de l'incrémenter proportionnellement au numéro de semaine et non pas ecrire toutes les semaines de l'année dans l'array
Et aprés créer le tableau structuré sur l'onglet de la semaine courante.
la je pense qu'il faut agir sur la
Sheets("N° semaine courante")
Mais je n'arrive pas a les lier entre eux .
Merci encore .
Partager