Erreur Synthaxe VBA

Voici le code que j'ai tapé dans un formulaire afin d'implémenter les données dans ma feuille "Base".

J'ai l'erreur méthode 'range' de l'objet '_global' a échoué, pourtant la synthaxe me parait bonne... il m'indique la phrase en rouge. Pourtant quand je tape Vbe m'identifie toutes les constantes ...

Une petite idée ?

Merci d'avance

Option Explicit
Dim lNumL As Long
Dim oControl As Control

Private Sub CommandValider_Click()
  Worksheets("Base").Activate
[color=#BF0000]  lNumL = Range("Numero").CurrentRegion.Rows.Count + Range("Numero").Row[/color]
  Cells(lNumL, Range("Nom du contrôle").Column) = Me.txtNom.Text
  Cells(lNumL, Range("Description").Column) = Me.txtDescription.Text
  Cells(lNumL, Range("Direction").Column) = Me.cboDirection.Text
  Cells(lNumL, Range("Département").Column) = Me.cboDept.Text
  Cells(lNumL, Range("Source").Column) = Me.cboSource.Text
  Cells(lNumL, Range("Résultat").Column) = Me.txtResultat.Text
  Cells(lNumL, Range("Commentaire").Column) = Me.txtCommentaire.Text
  Cells(lNumL, Range("Date_Creation").Column) = VBA.Date
  'Maintenant, passons à l'affectation des cases de périodicité
  For Each oControl In Me.GrPeriodicite.Controls
    If VBA.Left(VBA.LCase(oControl.Name), 3) = "opb" Then
      If oControl.Value Then
        Cells(lNumL, Range("Périodicité").Column) = oControl.Caption
      End If
    End If
  Next

  'Maintenant, passons à l'affectation de l'évaluation
  For Each oControl In Me.GrEval.Controls
    If VBA.Left(VBA.LCase(oControl.Name), 3) = "chb" Then
      Cells(lNumL, Range(VBA.Right(oControl.Name, VBA.Len(oControl.Name) - 3)).Column) = _
        VBA.IIf(oControl.Value, "X", "")
    End If
  Next

  Cells(lNumL, Range("Numero").Column) = Application.WorksheetFunction.Max( _
    Range(Range("Numero").Offset(1, 0), Cells(lNumL - 1, Range("Numero").Column))) + 1

End Sub

Merci d'avance

Bonjour,

Vérifier la définition de Range("Numero") :

1- est-ce le bon nom : Numero ou Numéro ?

2- le nom est-il défini au niveau classeur ou au niveau feuille ?

Je me suis posé cette question, et j'ai essayé avec les deux types ... sans succès....

Je vous joins mon fichier.

Merci pour votre réponse

10controle-form.xlsm (32.27 Ko)

bonjour,

Thev :

Chez moi Numéro passe sans problème : c'est la ligne suivante qui coince.

Range("Nom du Contrôle") n'existe pas remplacez par :

Cells(lNumL, Range("Nom").Column) = Me.txtNom.Text

Range("Source") n'existe pas non plus renommez le...

Range("Résultat") n'existe pas non plus : Créez le...

Range("Commentaire") n'existe pas non plus : Créez le...

Une faute par ligne : Je n'ai pas été plus loin...

A+

Bonjour,

Galopin a raison.

Par ailleurs, puisque tu as voulu utiliser des noms, ce qui me parait souhaitable pour faciliter la maintenance (ajout d'une nouvelle colonne par exemple), le plus simple aurait été de créer un objet tableau avec lequel les noms figurant dans l'entête des colonnes sont disponibles dans le code.

Exemple de code :

Private Sub CommandValider_Click()
    With Worksheets("Base").ListObjects(1)
        .ListRows.Add   'ajout d'une ligne à la fin de l'objet tableau
        lNumL = .ListRows.Count 'indice ligne ajoutée dans l'objet tableau
        .ListColumns("Nom du contrôle").DataBodyRange.Rows(lNumL) = Me.txtNom.Text
        ...................

        .ListColumns("Numéro").DataBodyRange.Rows(lNumL) = Application.Max(.ListColumns("Numéro").DataBodyRange) + 1
    End With
End Sub

Hi !

Pas sûr que notre ami sache ce qu'est un objet tableau...

A+

Bonsoir, merci pour votre réponse.

Mr Galopin vous n'êtes pas très sympa !

Je me forme comme je peux et j'essaie de progresser à mon niveau...

Je connais l'objet tableau, je vais donc fonctionner comme suit, et j'avoue ne pas y avoir pensé. Je l'avais utilisé dans un autre fichier pour générer des listes dépendantes dans un formulaire VBA.

Merci pour votre aide à tous les deux.

Bonsoir sh8per,

screen 1

sans être fossoyeur, j'ai trouvé un « h » dans « inhumer » et « exhumer » ; mais dans « synthaxe », ça m'paraît très suspect !

screen 2

alors avant d'enterrer VBA à ta prochaine erreur de compilation, essaye de simplifier ton orthographe sans la compliquer !

dhany

Je connais l'objet tableau

Parfait .

Mais il est vrai que le terme "objet tableau" peut ne pas être compris car les tutoriels sur ce sujet parlent plus de "tableau structuré".

"objet tableau" est plutôt une dénomination VBA .

sans être fossoyeur, j'ai trouvé un « h » dans « inhumer » et « exhumer » ; mais dans « synthaxe », ça m'paraît très suspect !

et voici le billet d'humour pour enrichir ce post.

Rechercher des sujets similaires à "erreur synthaxe vba"