j’ai des données quotidiennes dans un tableau ou les mois sont en colonnes et les jours en ligne.
L’idée est d’activer le coin supérieur gauche du tableau et de trouver le bon emplacement par activecell.offset(jour,mois).select mais les valeurs de jour et mois sont dans des variables qui ne sont pas acceptées en l’état . Que faire?
Mais non, Ca ne marche pas! mes variables jour et mois sont bien en integer et ça ne marche pas
Un petit bout de mon script ci-dessous
Range(« C23 »).Select ’ c’est la valeur à copier
zzz = ActiveCell.Value
Range(« G9 »).Select ‘c’est le coin supérieur gauche jusrte à l’extérieur
Dim jjour As Integer
Dim mmois As Integer
ActiveCell.Offset(jjour, mmois).Select ‘c’est cette commande qui ne marche pas
ActiveCell.Value = zzz
Sub M_Ajouter()
'****************************************************
'Tableau structuré « BDD » avec les jours en ligne et les mois en colonnes
'****************************************************
Range(« BDD »).Cells(Day(Date), Month(Date)).Value = 123
End Sub
Bonsoir à tous. Pour clarifier ci joint a) copie d’écran de la feuille ou je travaille et b) le script que j’essaye de faire marcher Toujours le même problème: offset ne fonctionne qu’avec une seule variable! J’ai essayé un offset en deux temps [offset(0, mois)] mais cela ne donne rien.
Dans la copie d’écran, à gauche les données initiales et les données calculées dans une autre feuille. A droite un tableau contenant les données quotidiennes (jours en ligne, mois en colonne) ceci pour simplifier les relevés avant transfert vers une feuille de comparaison avec les relevés de production en vue d’établir un coefficient de réfaction “nuage, neige, etc” J’ai fait plusieurs relevés à la main mais c’est trop lourd!
PS. plus tard,il faut éviter tout les “select” et “activate”, cela ne sert à rien et ralentit la macro
Sub Test()
Dim MaDate As Long, Mois, Jour
For MaDate = DateSerial(2026, 1, 1) To DateSerial(2026, 12, 31) 'boucler tous les jours de 2026
Mois = Month(MaDate) 'son mois
Jour = Day(MaDate) 'son jour
Range("H9").Offset(Jour, Mois).Value = MaDate 'écrire la date dans cette cellule en décalage
If Jour = 1 Then Range("H9").Offset(, Mois).Value = WorksheetFunction.Text(MaDate, "[$-fr-fr]mmmm") 'au dessus on écrit le mois avec un variable
If Mois = 1 Then Range("H9").Offset(Jour).Value = Jour 'à gauche, on ecrit le jour avec un variable
Next
With Range("H9").Offset(1, 1).Resize(31, 12) 'pour toute la plage
.NumberFormat = "ddd dd/mm/yyyy" 'modifier le format de la cellule en "date"
.EntireColumn.AutoFit 'ajuster largeur des colonnes
End With
End Sub