XL 2019 mettre des croix automatiquement sur Excel

fffffeefefef

XLDnaute Nouveau
bonjour je rencontre un problème j'essaye depuis des jours des mettre de croix automatiquement dans certaines cellules. en faite j'ai un calendrier et je voudrais mettre des croix tous les trois jours notamment afin de représenter une fréquence de passage régulier.
pourriez vous m'aider svp ?
 

Pièces jointes

  • calendrier.xlsx
    10.8 KB · Affichages: 24

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Pour se dégager du début de la prestation (pas forcément en colonne C), un essai en VBA.
Modifier une valeur du tableau (fréquence ou début), le tableau se mettra automatiquement à jour.
(j'ai supprimé le tableau structuré qui n'apporte rien)
 

Pièces jointes

  • fffffeefefef calendrier- v1.xlsm
    16.9 KB · Affichages: 16
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour fffffeefefef, chris, R@chid, mapomme,

Perso je mettrai en C6 =REPT("X";NON(MOD(C$5-$C$5;$B6)))

qui "pèse" 28 octets en mémoire au lieu de 41 octets pour =SI(MOD(C$5-$C$5;$B6);"";"X")

La fonction SI est en effet gourmande en octets.

A+
 

mapomme

XLDnaute Barbatruc
Supporter XLD
@mapomme tu as réaliser une macro pour le tableau ?
Oui pour le tableau. Mais j'ai converti ton tableau structuré en plage normale. Je ne vois pas ce qu'apporte le tableau structuré. On peut très bien filtrer sans tableau structuré. La macro est dans le module de code rattaché à Feuil1.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim derlig&, dercol&, plage As Range, t, i&, j&, deb&

   If Me.FilterMode Then Me.ShowAllData
   derlig = Cells(Rows.Count, "b").End(xlUp).Row
   dercol = Cells(5, Columns.Count).End(xlToLeft).Column
   Set plage = Range(Cells(6, "b"), Cells(derlig, dercol))
   If Intersect(plage, Target) Is Nothing Then Exit Sub
   t = plage.Value
   For i = 1 To UBound(t)
      For deb = 2 To UBound(t, 2)
         If t(i, deb) <> "" Then Exit For
      Next deb
      For j = deb To UBound(t, 2): t(i, j) = "": Next
      For j = deb To UBound(t, 2) Step t(i, 1): t(i, j) = "X": Next
   Next i
   Application.EnableEvents = False: plage = t: Application.EnableEvents = True
End Sub
 

Discussions similaires

Réponses
17
Affichages
680
Réponses
26
Affichages
420
Réponses
2
Affichages
185

Statistiques des forums

Discussions
312 345
Messages
2 087 470
Membres
103 551
dernier inscrit
d3vi