Incompatibilité privatesub / sub ?

Bonjour à tous

Je crois que j'ai une incompatibilité dans mon privatesub

j'ai le message d'erreur suivant :

erreur de compilation,

Sub, function ou propriety attendue

Voici mon code

Private Sub Comboweek_Change()
Dim ns As Long
Dim rng As Range
Dim NbCol As String

NbCol
Application.ScreenUpdating = False
    ns = Comboweek.ListIndex + [FW]
    Wshebdo.Range("calendw").AutoFilter Field:=2, Criteria1:=ns
    Set rng = Me.AutoFilter.Range

    ActiveWorkbook.Names.Add _
            Name:=ActiveSheet.Name & "!d.dates", _
            RefersTo:=rng.Offset(1, 0).Resize(rng.Rows.Count - 1, 1) _
                      .SpecialCells(xlCellTypeVisible)

    ActiveWorkbook.Names.Add _
            Name:=ActiveSheet.Name & "!d.données", _
            RefersTo:=rng.Offset(1, 3).Resize(rng.Rows.Count - 1, rng.Columns.Count - 3) _
                      .SpecialCells(xlCellTypeVisible)

    ActiveWorkbook.Names.Add _
            Name:=ActiveSheet.Name & "!d.absents", _
            RefersTo:=rng.Offset(1, 1).Resize(rng.Rows.Count - NbCol + 1, rng.Columns.Count - NbCol + 2) _
                      .SpecialCells(xlCellTypeVisible)
    Set rng = Nothing
End Sub

Sub NbCol()
Dim a
Dim n

a = WsPrm.[D2]
n = Range(a).Rows.Count

End Sub

Bonsoir,

vous déclarez une variable NbCol As String

ça ok c'est bon, mais ensuite vous écrivez

NbCol

vu qu'il n'y a pas d'égalité, VBA ne considère pas NbCol comme une variable, mais comme le nom d'une Sub, d'une fonction, hors aucun code ne correspond à cet appel!!! Donc erreur !

En étant un peu critique je ne comprend pas la déclaration :

NbCol pour nombre de colonne ? donc nombre , alors pourquoi "As String" ? un As Integer pour les colonnes serait plus approprié non ?

Ceci dit je n'ai pas regarder le code en profondeur...

@ bientôt

LouReeD

en dessous j'avais fait le Sub

Sub NbCol()
Dim a
Dim n

a = WsPrm.[D2]
n = Range(a).Rows.Count

End Sub
 

Par-contre tout cela est sur mon Wshebdo.

et je pense que le problème vient de là. par-contre j'avais essayé aussi sur un module mais ça ne fonctionnait pas non plus

Re,

Tu utilises le même nom dans la même procédure pour des choses différentes : conflit !

Et tes noms de plages me paraissent bizarres ! tous les caractères ne sont pas acceptés dans les noms : ça marche ??

Salut LouReed !

Oups !

je n'ai pas joué de l'ascenseur !

Bonsoir Maréchal

Du coup je dis pareil que vous !

@ bientôt

LouReeD

Mais c'est très bien ce que tu as dit Inutile que je le répète !!

Ok merci pour les explications parcontre comment je remonte dans mon Private Sub Comboweek_Change() la valeur calculer dans NbCol,

J'ai essayé ceci

Private Sub Comboweek_Change()
Dim ns As Long
Dim rng As Range
Dim i

NbCol

i = NbCol.Value

Application.ScreenUpdating = False
    ns = Comboweek.ListIndex + [FW]
    Wshebdo.Range("calendw").AutoFilter Field:=2, Criteria1:=ns
    Set rng = Me.AutoFilter.Range
    

mais évidement le problème reste le même, nbCol est attendu comme variable et pas comme macro


MFerrand a écrit :

Re,

Et tes noms de plages me paraissent bizarres ! tous les caractères ne sont pas acceptés dans les noms : ça marche ??

Pour l'instant j'ai pas eu de problème, les quels te semble bizarres?

Bonjour,

D'abord tu différencie le nom de la variable de celui de la procédure (précaution élémentaire). Ensuite, si elle doit renvoyer une valeur tu ne fais pas une Sub mais une Function : et ta proc. Function se termine par : NbCol = (valeur que doit renvoyer la fonction)

Côté variable : c'est : variable = NbCol()

Et là tu auras récupéré la valeur que tu cherches (si tout le reste est OK...)

Pour tes noms, si je n'ai pas rêvé, j'ai vu que tous incluaient un point d'exclamation ! Ce qui ne me semblait guère licite : et en testant de rentrer un nom incluant un ! Excel a immédiatemnt réagi : inadmis !

C'est pour cela que je demande si ça fonctionne ! (à moins que j'ai mal lu le code...)

Cordialement.

Super MFerrant c'est ok pour moi, Encore merci pour les explications,

Je valide.

Effectivement dans le code de Jean eric il y a des

"!dd"

mais pas de le gestionnaire de nom.

J'ai pas encore creuser de ce coté là.

Rechercher des sujets similaires à "incompatibilite privatesub sub"