[Résolu] Transposer formules en macro

Lone-wolf

XLDnaute Barbatruc
Bonjour le Forum,

j'aimerais transposer ces formules en VBA.

Code:
Private Sub Worksheet_Activate()
Sheets("Agenda").Activate

With ActiveSheet
.[D2] = Year(Date)
.[G2] = Month(Date)
.[I2] = Day(Date)
.[C4:I4].FormulaLocal = "=DATE($D$2;$G$2;$I$2)-JOURSEM(DATE($D$2;$G$2;$I$2);2)+COLONNE(A1)"
.[C4:I4].NumberFormat = "dd"
.[F2].FormulaLocal = "= MAJUSCULE(TEXTE(I4;""mmmm""))"
End With
End Sub

Edit: j'aimerais aussi changer les intitulés des CheckBox; si vous avez une idée, qu'elle soie la bienvenue.
Double-cliquez sur une cellule pour afficher le formulaire.

D'avance Merci.


A+ :cool:
 

Pièces jointes

  • Nouveau dossier.zip
    190.4 KB · Affichages: 34
  • Nouveau dossier.zip
    190.4 KB · Affichages: 37
  • Nouveau dossier.zip
    190.4 KB · Affichages: 36
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Transposer formules en macro

Bonjour à tous


Lone-Wolf
Étonnant que tu ne puisses te débrouiller seul (vu que tu n'es plus un débutant en VBA ;) )

Code:
Private Sub Worksheet_Activate()
Sheets("Agenda").Activate
With ActiveSheet
With .[C4]
    .Value = Date - Weekday(Date, vbMonday) + 1
    .AutoFill Destination:=[C4:I4], Type:=xlFillDefault
    .Resize(, 6).NumberFormat = "dd"
    .Offset(-2, 3) = UCase(Format(Date, "mmmm"))
End With
End With
End Sub

PS: J'ai supprimé le stockage de tes variables sur la feuille
Tu sauras, je pense, les rajouter si besoin ;)
 

Lone-wolf

XLDnaute Barbatruc
Re : Transposer formules en macro

Bonjour Staple,

Bien heureux de te relire :D
désolé pour ce petit retard, mais comme personne n'avais répondu hier, j'ai failli laisser tomber.

vu que tu n'es plus un débutant en VBA ;)
:D:D

Oui d'accord, je ne maîtrise pas encore. Mais le code écrit comme ceci fonctionne mieux ;)

Code:
With .[C4]
dat = CDate([I2] & "/" & [G2] & "/" & [D2])
    .Value = (dat - Weekday(dat, 2)) + 1
    .AutoFill Destination:=[C4:I4], Type:=xlFillDefault
   .[C4:I4].NumberFormat = "dd"
End With

Merci encore pour ton intervention.


A+ :cool:
 

Staple1600

XLDnaute Barbatruc
Re : Transposer formules en macro

Re

Bonjour Staple,
Mais le code écrit comme ceci fonctionne mieux ;)

Mais écrit comme cela, il est syntaxiquement mal écrit puisqu'on a au départ
With .[C4]
Pour t'en convaincre, testes ce qui suit
Code:
sub ok()
With .[C4]
 MsgBox .Resize(, 7).Address
 End With
End sub
Code:
sub pasok()
With .[C4]
MsgBox .[C4:I4].Address
End With
End sub

PS: Il fallait juste modifier le Resize dans mon précédent code (7 au lieu de 6)
 

Staple1600

XLDnaute Barbatruc
Re : [Résolu] Transposer formules en macro

Re

Personnellement j'écrirai ton précédent code ainsi
Code:
With ActiveSheet
dat = CDate([I2] & "/" & [G2] & "/" & [D2])
With .[C4]
    .NumberFormat = "dd"
    .Value = (dat - Weekday(dat, 2)) + 1
    .AutoFill [C4:I4], 0
End With
End With

QUESTION: Pourquoi utilises-tu trois cellules pour stocker une date ?
Et pourquoi utiliser ces cellules si la date est égale à la date du jour (donc Date en VBA ) ?
 

Staple1600

XLDnaute Barbatruc
Re : [Résolu] Transposer formules en macro

Re


Tu as fait le test du message #4 ?

PS : Cette partie de ton code initial indique bien que tu utilises la date du jour en cours
With ActiveSheet
.[D2] = Year(Date)
.[G2] = Month(Date)
.[I2] = Day(Date)

D'ou ma question, pourquoi trois cellules là où une (ou voir aucune car Date est toujours égale à aujourd'hui non ?) peut suffire
 

Lone-wolf

XLDnaute Barbatruc
Re : [Résolu] Transposer formules en macro

Re Staple

Maintenant que tu me montre la partie With..., je comprends mieux.
En effet elle est inutile et je l'ai supprimé après avoir fait quelques modifications dans le fichier, en attendant qu'on me réponde.


Edit: PJ

A+ :cool:
 

Pièces jointes

  • Agenda V7.zip
    187.9 KB · Affichages: 35
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : [Résolu] Transposer formules en macro

Re

Qu'on te réponde à quoi ??

Si tu as lu mon premier post, tu verras que je l'ai édité hier.

Tu as écrit que ton post était résolu, non ?

Pas tout à fait. Comme j'ai modifié le fichier avec cette nouvette macro, j'ai un problème à ce niveau:

[C5:I18].ClearContents
If Not IsDate([I2] & "/" & [G2] & "/" & [D2]) Then Exit Sub

Code:
Private Sub Worksheet_Calculate()
Dim lundi As Date, dimanche As Date, r As Range
Application.EnableEvents = False
 [C5:I18].ClearContents
If Not IsDate([I2] & "/" & [G2] & "/" & [D2]) Then Exit Sub
lundi = [C4]
dimanche = [I4]
With Sheets("Data")
  Set r = .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
End With
  On Error Resume Next
For Each r In r
  If r(1, 2) >= lundi And r(1, 2) <= dimanche Or Range(r).Value <> "" Then: Range(r) = r(1, 3): _
     Range(r).Interior.Color = r(1, 9).Interior.Color
Next
Application.EnableEvents = True
 End Sub

Quand je clique sur le compteur des jours, la cellule (E6 par exemple) s'éfface. Et comme le code est de job75, lui sera mieux l'adapter.



A+ :cool:
 

Discussions similaires

Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
312 168
Messages
2 085 907
Membres
103 029
dernier inscrit
ndembi sylver