XL 2013 Erreur de complilation

mcj1997

XLDnaute Accro
Bonjour,

J'ai une erreur de compilation sur la ligne Cancel = True dans le fichier joint que je n'arrive pas à régler.
La formule sur laquelle je bloque permet d'indiquer automatiquement le N° de semaine après saisie d'une date.

Merci d'avance,
 

Pièces jointes

  • NO_SEMAINE.xlsm
    23.2 KB · Affichages: 32

Jacky67

XLDnaute Barbatruc
Bonsoir,

Cancel n'existe pas dans l'évènement " Worksheet_Change"
Le paramètre 21 n'existe pas dans "WeekNum"
"Columm" n'existe pas
"WeeekNum" n'existe pas

Essaye comme ceci
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("a6:e" & Rows.Count), Target) Is Nothing Then
  [e3] = [SUMPRODUCT(LigAff(E6:E300)*(E6:E300="x"))]
  [c3] = [SUMPRODUCT(LigAff(C6:C300)*ISNUMBER(C6:C300))]
  [f3] = [SUMPRODUCT(LigAff(f6:f300)*(f6:f300="x"))]
  [f3] = [SUMPRODUCT(LigAff(g6:g300)*(g6:g300="x"))]
  If Target.Column = 3 And Target.Row > 5 Then
  If Target.Value <> "" Then
  Cells(Target.Row, 4).Value = Application.WorksheetFunction.WeekNum(Target.Value, 2)
  End If
  End If
End If
End Sub
 
Dernière édition:

mcj1997

XLDnaute Accro
Bonsoir,

Cancel n'existe pas dans l'évènement " Worksheet_Change"
Le paramètre 21 n'existe pas dans "WeekNum"
"Columm" n'existe pas
"WeeekNum" n'existe pas

Essaye comme ceci
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("a6:e" & Rows.Count), Target) Is Nothing Then
  [e3] = [SUMPRODUCT(LigAff(E6:E300)*(E6:E300="x"))]
  [c3] = [SUMPRODUCT(LigAff(C6:C300)*ISNUMBER(C6:C300))]
  [f3] = [SUMPRODUCT(LigAff(f6:f300)*(f6:f300="x"))]
  [f3] = [SUMPRODUCT(LigAff(g6:g300)*(g6:g300="x"))]
  If Target.Column = 3 And Target.Row > 5 Then
  If Target.Value <> "" Then
  Cells(Target.Row, 4).Value = Application.WorksheetFunction.WeekNum(Target.Value, 2)
  End If
  End If
End If
End Sub

Cela fonctionne au niveau numéro de semaine mais ne fonctionne plus pour les compteurs de "dates" et de "X".

Merci
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Le paramètre 21 n'existe pas dans "WeekNum"
Pour la fonction NO.SEMAINE, le paramètre 21 existe depuis Excel 2010. Cela correspond au numéro de semaine de la norme ISO qu'on emploie notamment en Europe. La semaine n° 1 est la première semaine de l'année à quatre jours au moins dans l'année (lundi étant le premier jour de la semaine).

L'instruction suivante renvoie le numéro de semaine 53 :
Code:
MsgBox Application.WorksheetFunction.WeekNum(DateSerial(2016, 1, 1), 21)
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
@ jacky67 :),

Point n'est besoin d'être désolé. Tout comme toi, j'en apprends encore tous les jours dans le domaine d'Excel et c'est cela qui entretient la flamme (et pas la flams ! comme on dit vulgairement chez nous).

Ayant Excel2007, tu es condamné à utiliser la longue formule de calcul pour avoir le n° de semaine ISO :p
 
Dernière édition:

mcj1997

XLDnaute Accro
Re..
Aucun problème chez moi....
Rien n'a était changé à ce niveau
Ci cela fonctionné avant il n'y a aucune raison que ce soit autrement.


Voici ce que j'ai copié dans feuil1 :

Option Explicit
Private Sub Worksheet_Calculate()
[e3] = [SUMPRODUCT(LigAff(E6:E300)*(E6:E300="x"))]
[c3] = [SUMPRODUCT(LigAff(C6:C300)*ISNUMBER(C6:C300))]
[f3] = [SUMPRODUCT(LigAff(f6:f300)*(f6:f300="x"))]
[g3] = [SUMPRODUCT(LigAff(g6:g300)*(g6:g300="x"))]
End Sub
Private Sub Worksheet_Activate()
[e3] = [SUMPRODUCT(LigAff(E6:E300)*(E6:E300="x"))]
[c3] = [SUMPRODUCT(LigAff(C6:C300)*ISNUMBER(C6:C300))]
[f3] = [SUMPRODUCT(LigAff(f6:f300)*(f6:f300="x"))]
[f3] = [SUMPRODUCT(LigAff(g6:g300)*(g6:g300="x"))]
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("a6:e" & Rows.Count), Target) Is Nothing Then
[e3] = [SUMPRODUCT(LigAff(E6:E300)*(E6:E300="x"))]
[c3] = [SUMPRODUCT(LigAff(C6:C300)*ISNUMBER(C6:C300))]
[f3] = [SUMPRODUCT(LigAff(f6:f300)*(f6:f300="x"))]
[f3] = [SUMPRODUCT(LigAff(g6:g300)*(g6:g300="x"))]
If Target.Column = 3 And Target.Row > 5 Then
If Target.Value <> "" Then
Cells(Target.Row, 4).Value = Application.WorksheetFunction.WeekNum(Target.Value, 2)
End If
End If
End If
End Sub


J'ai un message d'erreur "erreur de compilation : Sub ou Function non définie" et les lignes suivantes se mettent en rouge :

If Target.Column = 3 And Target.Row > 5 Then
If Target.Value <> "" Then
End If
End If
 

Jacky67

XLDnaute Barbatruc
C'est nickel merci JACKY67 & MAPOMME, il faut que j'apprenne !
Re..
Ben non, il y a une erreur de code dans le classeur d'origine
[f3] = [SUMPRODUCT(LigAff(f6:f300)*(f6:f300="x"))]
[f3] = [SUMPRODUCT(LigAff(g6:g300)*(g6:g300="x"))]
2 fois la même cellule
Le classeur en pj avec correction
+cellules défusionnées
+obligation de saisie de date pour la colonne correspondante
+obligation de saisie d'un X
et une petite gestion d'erreur

Nb: ne pas oublier
.......WeekNum(Target.Value, 2)
.......WeekNum(Target.Value, 21)

*PJ modifiée et épurée
 

Pièces jointes

  • NO_SEMAINE version 2).xlsm
    30.2 KB · Affichages: 30
Dernière édition:

mcj1997

XLDnaute Accro
Merci JACKY 67, j'ai recopié en corrigeant :

.......WeekNum(Target.Value, 2)
.......WeekNum(Target.Value, 21)

Je suis intéressé par ces formules en VBA car cela évite d'avoir les formules sur les feuilles et de risquer de les effacer même si la protection est possible. L'inconvénient que je rencontre avec les protections de cellule est que dans certains cas cela empêche de filtrer.

Merci encore,
 

Statistiques des forums

Discussions
312 180
Messages
2 085 995
Membres
103 082
dernier inscrit
adri77