IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Variable objet ou variable de bloc With non définie ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de alain78
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Par défaut Variable objet ou variable de bloc With non définie ?
    Bonjour à toutes et à tous,

    Petit souci et je ne comprend pas pourquoi .

    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    Dim memtableau As Range
     
    ' trouver la date minimum
         memtableau = Range("A1:B71")
         dateMini = WorksheetFunction.Min(memtableau)
         dateMaxi = WorksheetFunction.Max(memtableau)
    A la compilation, le message "Variable objet ou variable de bloc With non définie" se bloque sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      memtableau = Range("A1:B71")
    Et pourtant la variable est bien déclarée au dessus. J'ai aussi essayé de la déclarer Public hors module. Même résultat.

    Avez vous une idée ?

    Remerciements par avance.

  2. #2
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Bonjour,

    L'instruction d'affection d'un objet doit commencer par Set :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set memtableau = Range("A1:B71")
    EDIT : et pour éviter les ambigüités il est préférable de préciser le(s) Parent(s)

  3. #3
    Membre confirmé Avatar de alain78
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Par défaut
    Merci pour cette précision que j'ai ignorée.

    Mais maintenant c'est la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dateMini = WorksheetFunction.Min(memtableau)
    qui bloque avec le message

    Argument ou appel de procédure incorrect

    ??

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim dateMini As Date
    '....
    '....
    dateMini = Application.WorksheetFunction.Min(memtableau)

  5. #5
    Membre confirmé Avatar de alain78
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Par défaut
    J'ai depuis mon dernier post trouvé la réponse grâce au message du debug.

    Voici ce que j'ai et qui marche bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                  Worksheets("Séances").Select
                    Set plage = Range("A1:A71")
                    datemini = WorksheetFunction.Min(plage)
                    datemaxi = WorksheetFunction.Max(plage)
    En fait j'avais oublié de positionner le focus (Worksheets("Séances").Select) et donc Excel ne trouvait pas le Range.

    Merci encore Patrice.

  6. #6
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 732
    Par défaut
    bonsoir,
    étonnant, le test sur mon ordinateur le code fonctionne impec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    Dim memtableau As Range
    Dim datemini As Date
    Dim datemax As Date
    Set memtableau = Range("a1:b3")
    datemini = WorksheetFunction.Min(memtableau)
    datemax = WorksheetFunction.Max(memtableau)
    MsgBox "Mini " & datemini & "     Maxi " & datemax
    Range("d1").Value = datemini
    Range("d2").Value = datemax
    End Sub
    vous devez avoir un problème ailleurs
    Vous pouvez le tester sur un document. ça marche!
    cordialement

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Citation Envoyé par alain78 Voir le message
    En fait j'avais oublié de positionner le focus (Worksheets("Séances").Select) et donc Excel ne trouvait pas le Range.
    Mais le .Select est inutile, chronophage et c'est une mauvaise solution qui pourrait poser problème dans certains cas.
    La bonne syntaxe est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                  Set plage = Worksheets("Séances").Range("A1:A71")
                    datemini = WorksheetFunction.Min(plage)
                    datemaxi = WorksheetFunction.Max(plage)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Variable objet ou variable de bloc With non définie
    Par juliusmarat dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/11/2010, 14h06
  2. erreur 91 variable objet ou variable de bloc with non définie
    Par ballantine's dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 03/12/2009, 16h41
  3. variable objet ou variable de bloc with non définie
    Par arctica dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/10/2009, 09h24
  4. Variable objet ou variable de bloc With non définie
    Par sl1980 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 24/08/2007, 19h15
  5. Réponses: 11
    Dernier message: 12/06/2007, 09h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo