XL 2013 macro redondance

judoka0209

XLDnaute Occasionnel
bonjour, j'ai un soucis pour integrer des formules que j'ai faite et quelles s'executent en macro
je ne sais pas du tout comment faire
=SI(NB.SI('[Planning_EP.xlsm]année en cours'!$D$7:$BC$7;"a")*NB.SI(C2;"jeu")*NB.SI($C$1;"janvier")*NB.SI('[Planning_EP.xlsm]année en cours'!$D$5:$BC$5;"janvier")*NB.SI(C6;"A");6;"")
=SI(NB.SI('[Planning_EP.xlsm]année en cours'!$D$7:$BC$7;"a")*NB.SI(AG2;"jeu")*NB.SI($C$1;"janvier")*NB.SI('[Planning_EP.xlsm]année en cours'!$D$5:$BC$5;"janvier")*NB.SI(AG6;"A");6;"")
=SI(NB.SI('[Planning_EP.xlsm]année en cours'!$D$7:$BC$7;"a")*NB.SI(AH2;"jeu")*NB.SI($AH$1;"février")*NB.SI('[Planning_EP.xlsm]année en cours'!$D$5:$BC$5;"février")*NB.SI(AH6;"A");6;"")
=SI(NB.SI('[Planning_EP.xlsm]année en cours'!$D$7:$BC$7;"a")*NB.SI(BI2;"jeu")*NB.SI($AH$1;"février")*NB.SI('[Planning_EP.xlsm]année en cours'!$D$5:$BC$5;"février")*NB.SI(BI6;"A");6;"")

c'est du 1er janvier au 31 decembre
merci
 

Staple1600

XLDnaute Barbatruc
Re

Tout est confidentiel
Et alors?
Tu crées une copie anonyme light
avec NOM1 PRENOM1 etc
(tu utilises les fonctionnalités d'Excel
Recopie vers le bas, vers la droite
CTRL+H
etc...)

Puis après un délai qui variera de 7 minutes et 31 secondes à 17 minutes et 27 secondes, tu seras enfin prêt à joindre ton petit bout de fichier anonymisé ;)
 

Staple1600

XLDnaute Barbatruc
Re

Désolé mais comme tu pas posté ton fichier à 23h01 (dans la même minute où je postais le message#5), je n'ai rien vu.

Mais là, il tard (très tard même), je vais me coucher.

Je repasserai dans ton fil plus tard (au cas ou d'autres n'y seraient pas passés avant moi pour prendre le relais)

Bonne nuit à tous.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

Bonjour i13947 Aka PA*N Chris***h* Aka judoka0209
(il restait un chouia de confidences dans ton fichier ;))

1)Ton fichier étant en liaison avec Planning_EP.xlsm, c'est embêtant pour tester...
C:\Users\i13947\Desktop\[Planning_EP.xlsm]

2) Dans ta procédure événementielle : Worksheet_Change
Tu affiches alerte.Show
Or point d'Userform nommé alerte dans ton fichier, c'est embêtant pour tester...

3)
VB:
Private Sub CommandButton2_Click()
UserForm1.Show
End Sub
Point de Userform nommé UserForm1
Là cela devient une addiction à l’embêtement ;)

Sinon suggestion du samedi matin en passant
Pourquoi pas tout simplement:
=C3 (en cellule C2 et suivantes) puisque les cellules sont déjà formatées en : jjj
 
Dernière édition:

judoka0209

XLDnaute Occasionnel
bonjour stapple 1600, c'est pas mon nom qui est confidentiel mais le contenu du fichier:)
merci pour le temps qur tu passe a essayer de me demmerder
pour le jour dans les cellules j'ai été oblige de faire ça car sinon il me trouve pas le jour mais uniquement la date
ce que je veux faire avec toutes ces formules c'est d'afficher le resultat dans la cellule et pas le formule mais je ne sais pas comment faire je suis nul en vba je sais les modifier m:ais pas les creer
pour tous les autres userform je les retirent ce soir cela sera plus facile
merci
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

ce que je veux faire avec toutes ces formules c'est d'afficher le resultat dans la cellule et pas le formule
Je me suis borné à juste traduire ta formule en VBA.
Est-ce que cela te donne une piste ou pas ?
(dans cet exemple, je ne teste que le cas du mois de janvier)
VB:
Sub Test()
Dim plageA As Range, plageB As Range, c As Range
Set plageA = Sheets("ep").Range("$D$7:$BC$7")
Set plageB = Sheets("ep").Range("$D$5:$BC$5")
With Application
    .ScreenUpdating = False
    For Each c In Range("C5:NC5")
    Select Case Month(c.Offset(-2))
    Case 1
    If .CountIf(plageA, "a") * .CountIf(c.Offset(-3), "jeu") * .CountIf(Range("C1"), MonthName(1)) * _
        .CountIf(plageB, MonthName(1)) * .CountIf(c.Offset(1), "a") Then
    MsgBox c.Address ' c'est juste pour tester
    MsgBox 6 ' c'est juste pour tester
    Else
    'Case 2
    '
    End If
    End Select
    Next
End With
End Sub
 

judoka0209

XLDnaute Occasionnel
pour fevrier je dois mettre ca

Sub Test()
Dim plageA As Range, plageB As Range, c As Range
Set plageA = Sheets("ep").Range("$D$7:$BC$7")
Set plageB = Sheets("ep").Range("$D$5:$BC$5")
With Application
.ScreenUpdating = False
For Each c In Range("C5:NC5")
Select Case Month(c.Offset(-2))
Case 1
If .CountIf(plageA, "a") * .CountIf(c.Offset(-3), "jeu") * .CountIf(Range("C1"), MonthName(1)) * _
.CountIf(plageB, MonthName(1)) * .CountIf(c.Offset(1), "a") Then
c=6
Else
Case 2
If .CountIf(plageA, "a") * .CountIf(c.Offset(-3), "jeu") * .CountIf(Range("ah1"), MonthName(2)) * _
.CountIf(plageB, MonthName(2)) * .CountIf(c.Offset(1), "a") Then
c=6

Else

End If
End Select
Next
End With
End Sub
 
Dernière édition:

Statistiques des forums

Discussions
312 305
Messages
2 087 089
Membres
103 464
dernier inscrit
Inconnu2