Variable non défiini qui fonctionne avec "option explicit"

Bonjour,

J'ai un petit souci avec "Option explicit"

Contrairement au bon fonctionnement de l'option je n'ai pas d'erreur concernant une nouvelle variable.

Je m'explique je mets à jour mon code avec une harmonisation des variables sur tout mes codes.

Or sur un module j'ai rajouté des variable qui n'était pas défini et le code fonctionne, je n'ai pas de message d'erreur de variable non défini.

Vous allez me dire tant mieux ça fonctionne mais c'est pas le but de l'option. Quelqu'un as-t'il une idée du "Pourquoi".

merci d'avance

PS : voici le code, la variable a n'est pas défini et le code fonctionne

Option Explicit
'12-_____________________________________________________________________________________________________________
'_______________________________________________________________________________________________________________
Sub répart_CC_SR()
'------------------------------------Affectun n° de cas / Passage-----------------------------------------------
'_______________________________________________________________________________________________________________
'_______________________________________________________________________________________________________________
Dim lngMinL As Long, lngMaxL As Long, lngAleaL As Long
Dim colMinL As Long, colMaxL As Long, colaleaL As Long
Dim mdp As Variant, x As Variant, y As Variant
Dim derlig As Long, dercol As Long
Dim m As Long, n As Long
Dim Nb_CC As Variant, plagel As Range, lng_groupe As Long, Nb_stag As Long, Nb_CC_lgn As Long
Dim cell As Range
Dim Nb_CC_ent As Long, Nb_CC_pers As Long

mdp = Sheets("Gestion").Range("J2").Value

a=0

Sheets("CC SR").Unprotect Password:=mdp
Sheets("Sommaire CC SR").Copy after:=Sheets("Sommaire CC SAV")
Sheets("Sommaire CC SR (2)").Name = "repart"
Sheets("repart").Unprotect Password:=mdp
Nb_CC_ent = 0

With Sheets("repart").Range("A:Z")
    Set x = .Find("Entrainements Obligatoires dans l'ordre", LookIn:=xlValues)
    Nb_CC_ent = Sheets("repart").Range(x.Address).Offset(1, 0).End(xlDown).Row - Sheets("repart").Range(x.Address).Row
End With

Sheets("CC SR").Activate
lng_groupe = Range("AS2").Value
dercol = Cells(7, Columns.Count).End(xlToLeft).Column
'_________________________________________
'_________________________________________Cas Concrets Ent
'_________________________________________

Nb_CC_pers = 0
Nb_stag = Cells(36 + lng_groupe, 3).Value

derlig = (Sheets("repart").Range("A3").End(xlDown).Row)

Sheets("CC SR").Activate
For m = 5 To dercol
    For n = 8 + lng_groupe To 35 + lng_groupe
        If Cells(n, m).Interior.Color = RGB(180, 198, 231) And Nb_CC_ent <> 0 Then
            Cells(n, m).Value = Sheets("repart").Range(x.Address).Offset(1 + p, 0)
            Nb_CC_ent = Nb_CC_ent - 1

            Nb_CC_pers = Nb_CC_pers + 1

            If Nb_CC_pers = Nb_stag Then
                GoTo Suite1:
            End If

        ElseIf Cells(n, m).Interior.Color = RGB(180, 198, 231) And Nb_CC_ent = 0 Then
choix1:
            Sheets("repart").Activate
            Sheets("repart").Range(Cells(3, 1), Cells(derlig, 1)).Select      ' sélection de la 1ère ligne
            lngMinL = Selection.Rows(1).Row                     ' numéro de la 1ère ligne
            lngMaxL = Selection.Rows.Count + lngMinL - 1        ' numéro de la dernière ligne
            lngAleaL = (lngMaxL - lngMinL) * Rnd() + lngMinL    ' tirage aléatoire pour la ligne

            If Sheets("repart").Cells(lngAleaL, 1) = 0 Then
                GoTo choix1:
            End If

            Nb_CC = Sheets("repart").Cells(lngAleaL, 1)
            Sheets("repart").Cells(lngAleaL, 1) = "0"
            Sheets("CC SR").Activate
            Cells(n, m).Value = Nb_CC
            Nb_CC_pers = Nb_CC_pers + 1

            If Nb_CC_pers = Nb_stag Then
                GoTo Suite1:
            End If
        End If
    Next n
Next m

Suite1:

With Sheets("repart").Range("A:Z")
    Set y = .Find("Entrainements Obligatoires (pas d'ordre précis)", LookIn:=xlValues)
    Nb_CC_ent = Sheets("repart").Range(y.Address).Offset(1, 0).End(xlDown).Row - Sheets("repart").Range(y.Address).Row
End With

For m = 1 To Nb_CC_ent
choix2:

    Sheets("CC SR").Range(Cells(8 + lng_groupe, 5), Cells(35 + lng_groupe, dercol)).Select
    lngMinL = Selection.Rows(1).Row                     ' numéro de la 1ère ligne
    lngMaxL = Selection.Rows.Count + lngMinL - 1        ' numéro de la dernière ligne
    colMinL = Selection.Columns(1).Column                     ' numéro de la 1ère ligne
    colMaxL = Selection.Columns.Count + colMinL - 1        ' numéro de la dernière ligne

    lngAleaL = (lngMaxL - lngMinL) * Rnd() + lngMinL    ' tirage aléatoire pour la ligne
    colaleaL = (colMaxL - colMinL) * Rnd() + colMinL    ' tirage aléatoire pour la ligne

    If Cells(lngAleaL, colaleaL).Interior.Color = RGB(180, 198, 231) Then
        For n = Sheets("repart").Range(x.Address).Offset(1, 0).Row To Sheets("repart").Range(x.Address).Offset(1, 0).End(xlDown).Row
            If Cells(lngAleaL, colaleaL).Value = Sheets("repart").Cells(n, 1).Value Or Cells(lngAleaL, colaleaL).Value = "x" Then
                GoTo choix2:
            End If
        Next n

        Cells(lngAleaL, colaleaL).Value = "x"
            'Sheets("repart").Range(y.Address).Offset(m, 0).Value
        GoTo cas1:
    Else
        GoTo choix2:
    End If
cas1:
Next m

For m = 1 To Nb_CC_ent
    With Sheets("CC SR").Range(Cells(8 + lng_groupe, 5), Cells(35 + lng_groupe, dercol))
        Set x = .Find("x", LookIn:=xlValues)
        Range(x.Address).Value = Sheets("repart").Range(y.Address).Offset(m, 0)
    End With
Next m
'changer 2 thèmes par les thèmes obligatoires sans ordre précis

'_________________________________________
'_________________________________________Cas Concrets Noté
'_________________________________________
Application.DisplayAlerts = False
Sheets("repart").Delete
Application.DisplayAlerts = True
Sheets("Sommaire CC SR").Copy after:=Sheets("Sommaire CC SAV")
Sheets("Sommaire CC SR (2)").Name = "repart"
Sheets("repart").Unprotect Password:=mdp

Sheets("CC SR").Activate
With Sheets("repart").Range("A:Z")
    Set x = .Find("Entrainements Obligatoires dans l'ordre", LookIn:=xlValues)
End With

Nb_CC_pers = 0
derlig = (Sheets("repart").Range("F3").End(xlDown).Row)

For m = 5 To dercol
    For n = 8 + lng_groupe To 35 + lng_groupe
        If Cells(n, m).Interior.Color = RGB(112, 173, 71) Then
'___________________________________________________
'--------------------cas précendent------------------------
'_____________________________________________________

            ajout_ligne = 0
            Set plagel = Range(Cells(n, 5), Cells(n, m))       ' on regarde les cellules précedentes
            Nb_CC_lgn = Application.WorksheetFunction.CountA(plagel)        'si la valeur de p est déjà attribué on recherche une nouvelle ligne

            If Nb_CC_lgn <> 0 Then
                For Each cell In plagel
                    If cell.Formula <> "" Then
                        Cells(1 + ajout_ligne, 53).Formula = cell
                        With Sheets("repart").Range("A:A")
                            Set y = .Find(cell, LookIn:=xlValues)
                        End With
                        Cells(1 + ajout_ligne, 53).Value = Sheets("repart").Range(y.Address).Offset(0, 3).Value
                        ajout_ligne = ajout_ligne + 1
                    Else: End If
                Next cell
            End If
choix3:
            Sheets("repart").Activate
            Sheets("repart").Range(Cells(3, 6), Cells(derlig, 6)).Select      ' sélection de la 1ère ligne
            lngMinL = Selection.Rows(1).Row                     ' numéro de la 1ère ligne
            lngMaxL = Selection.Rows.Count + lngMinL - 1        ' numéro de la dernière ligne
            lngAleaL = (lngMaxL - lngMinL) * Rnd() + lngMinL    ' tirage aléatoire pour la ligne
            Nb_CC_ent = Sheets("repart").Cells(lngAleaL, 9)

            If Sheets("repart").Cells(lngAleaL, 6) = 0 Or Sheets("repart").Cells(lngAleaL, 9) = Sheets("CC SR").Cells(ajout_ligne, 53).Value Then
                GoTo choix3:
            End If

            Nb_CC = Sheets("repart").Cells(lngAleaL, 6)
            Sheets("repart").Cells(lngAleaL, 6) = "0"
            Sheets("CC SR").Activate
            Cells(n, m).Value = Nb_CC
            Nb_CC_pers = Nb_CC_pers + 1
            Sheets("CC SR").Cells(ajout_ligne, 53).Clear

            If Nb_CC_pers = Nb_stag Then
                GoTo Suite2:
            End If
        End If
    Next n
Next m

Suite2:

Application.DisplayAlerts = False
Sheets("repart").Delete
Application.DisplayAlerts = True

End Sub

Bon ça refonctionne..

A ni rien comprendre j'avais pourtant enregistré, quitté et rouvert. il n'y a pas eu de changement.

je suis toujours preneur d'une réponse même si je sais que ça ne vient pas du code.

Un réglage, une formule (genre : application.screenupdaiting....) ou autre ?

Merci

Bonjour,

As-tu modifié des options dans l'éditeur VBE (Ruban, Outils, Options...) ?

Cdlt.

Non pas de modification dans l'éditeur.

Le pire c'est que je ne sais pas pourquoi ça refonctionne.

C'est pas la 1ere fois que ça m'arrive et j'ai pas d'explication ça me perturbe

Re,

Peux-tu faire de petites copies (images) de tes options VBE ?

Cdlt.

j'espère que c'est ce que tu me demande :

option

Re,

J'ai la même configuration.

J'ai du mal à comprendre ce qu'il t'arrive !...

Cdlt.

Salut

As-tu déclare des variable public dans autre module ou projets

Merci Jean-Eric

Le problème n'est que passager mais j'aimerai ne pas passer à côté de quelque chose et que mon programme déconne dans quelques semaines.

AMIR, je n'ai qu'une seul variable publique dans un autre module mais elle n'a rien à voir avec la nouvelle variable...

(variable publique : SnomFichier, nouvelle variable : a, b c....)

Alors il y a un a

Non pas de "a" de défini ni avant ni en public

D’accords

autre chose

pour quoi a=0 sont trops raproche normalement dans le bon editeur ils seront comme ca a = 0

Parce que je l'ai rajouté après avoir copié le code, pour confirmer que l'option explicit ne marchait pas.

Salut

essaye d envoyer un fichier exemple

Envoyer un fichier c'est compliqué comme dis plus tôt mon code à fini par remarcher.

Ce que je ne comprends pas c'est pourquoi ça a deconné. Et si quelqu'un a une réponse.

Salut

Ce que je ne comprends pas c'est pourquoi ça a deconné

ce que tu dis est une hypothèse

tu peu confirmer ça par la création d’un simple fichier comme celui ci et vérifier la persistance de ton problème

5classeur1.xlsm (11.17 Ko)

notez aussi que autres chose comme les macros complémentaire peuvent cause la même problème

j'ai pu vérifier en changeant juste de module.

Seul le module sur lequel je travaillais a déconné. J'ai essayé sur un autre module dans le même classeur et j'avais bien mon message d'erreur.

Qu'est ce que tu appelles "macros complémentaire?"

merci pour les réponses

Rechercher des sujets similaires à "variable defiini qui fonctionne option explicit"