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 :

erreur 91, variable non défini ou variable de bloc with [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut erreur 91, variable non défini ou variable de bloc with
    Bonjour à tous !!

    Tout nouveau dans le forum et dans le langage VBA j'ai un problème ....

    Je veux créer un code VBA qui me permet de lancer une macro quand je met une valeur sur une plage de donnée (répéter 3 lignes plus bas (avec une boucle)). Pour lancer cette macro la valeur doit être différente de "0", et la macro renvoie vers une autre feuille.

    Mais une erreur persiste : erreur d'exécution "91" : variable objet ou variable de bloc With non définie

    Voici mon code de VBA rattacher à la feuille :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    For i = 0 To 22
    Set maplage = Range("E" & 673 + 3 * i & ":P" & 673 + 3 * i)
     
    If Not Application.Intersect(Target, Range("E" & 673 + 3 * i & ":P" & 673 + 3 * i)) <> 0 Then renvoie_fiche_details_renouvellement
     
    Next i
    End Sub
    l'erreur se situe à la ligne 7

    et voici le code du module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub renvoie_fiche_details_renouvellement()
     
          With Sheets("renouvel életro details").Select
          End With
    End Sub

    Merci pour votre aide !!!
    et si je n'ai pas été assez claire n'hésitez pas !!

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 67
    Points : 52
    Points
    52
    Par défaut
    Bonjour,

    Je pense qu'il n'y a pas besoin du .Select a la fin de ton With

    Cordialement,

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    En effet il ne sert à rien !!!!

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 67
    Points : 52
    Points
    52
    Par défaut
    Pense a cliquer sur le bouton "Résolu" si ton problème est corrigé, sinon dis nous ce qui vas pas

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Oups oublié de préciser que enlever .Select n'as rien changer au problème ....

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 67
    Points : 52
    Points
    52
    Par défaut
    D'accord alors essaye de remplacer "With Sheets ..." par "With Worksheets", j'utilise comme ceci les With dans mes macros et je n'ai eu aucun problème

    Cordialement,

    Dylan

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    bonjour,

    sélectionne le mot with , appui ensuite sur la touche :F1: et demande toi à quoi sert cette instruction dans ton code ...

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 67
    Points : 52
    Points
    52
    Par défaut Petite question ^^
    Mais au fait que fais exactement ta fonction : "renvoie_fiche_details_renouvellement" ? Si c'est pour renvoyer l'utilisateur a la feuille "fiche_details_renouvellement" à

    la fin de ta macro , tu n'as qu'a ajouté a la fin de ta condition If :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Then Worksheets("renouvel életro details").Activate
    Cordialement,,,

    Dylan

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    mais oui dylan.pascal tu as raison je me suis embêté pour rien avec la macro car je veux renvoyer l'utilisateur à la feuille "fiche_details_renouvellement" quand il tape une valeur différente de "0". Et comme ça cela résout le problème de With, bbil

    Cependant le problème persiste .....

    je penche pour définir une variable mais je ne comprend pas bien son fonctionnement/utilité malgré tout les informations fournis par internet dessus ...!!!
    J'ai essayer :
    "Dim i As Integer" pour définir la variable i mais cela ne marche pas. Je doit être à côté de la plaque !!!

    Voici le nouveau code plus propre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Change(ByVal Target As Range)
    For i = 0 To 22
     
    Set maplage = Range("E" & 673 + 3 * i & ":P" & 673 + 3 * i)
     
    If Application.Intersect(Target, Range("E" & 673 + 3 * i & ":P" & 673 + 3 * i)) <> 0 Then Worksheets("renouvel életro details").Activate
     
     
    Next i
     
    End Sub
    Si vous avez des idées !!

  10. #10
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    bonjour,

    2 propositions

    1) dans un module déclare ton i en public ex: 2) je pense que ton problème viens de ton target qui doit être mal utilisé pour avoir un range je serai tenté de dire un truc du genre Target.adress ou Target.range ...

    c'est juste une proposition sans garantie que cela fonctionne ou que ce soit cela

    A+

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    tout d'abord je vous remercie pour vos réponses !!!

    Igloobel: j'ai essayé la première proposition mais sans succès ... pour le changement du Target en Target.adress ou Target.range j'ai essayer de les placer à divers endroit de la ligne 7 mais idem ....

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Je comprends pas ce que tu fais ....... tu essais au hasard tu lance les dés puis tu écrit target ou Target.adress sans savoir de que c'est ...?


    re-dis nous ce que tu veux faire .. pourquoi faire une boucle de 0 à 22 alors que tu n'en dis rien dans ton descriptif ?

    Je veux créer un code VBA qui me permet de lancer une macro quand je met une valeur sur une plage de donnée (répéter 3 lignes plus bas (avec une boucle)). Pour lancer cette macro la valeur doit être différente de "0", et la macro renvoie vers une autre feuille.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Ok je n'ai pas été très claire

    J'ai joint un fichier si cela permet d'être plus facile à me faire comprendre !!
    Je doit remplir une ligne sur 3 (ligne mensuel), des données, sur un ensemble de 22 villes, (d'où la boucle de 0 à 22). Si la valeur rentrée est égal à 0 alors je ne fais rien, mais si différentes alors j'ouvre automatiquement un nouvel onglet (renouvel életro details) ou je peux mettre des détails plus précis. Et je fais cela sur plusieurs thèmes, Renouvellement élecro. PROGRAMME, Renouvellement pompe, ....


    Je comprends pas ce que tu fais ....... tu essais au hasard tu lance les dés puis tu écrit target ou Target.adress sans savoir de que c'est ...?
    Non, je me renseigne sur la commande en amont, puis j’essaie plusieurs solutions car des fois je ne comprend pas tout .... (cela fait 2 jours que je me lance dans les macros)

    Voilà en espérant avoir été plus claire !!!
    merci

    le lien : test macro.xlsm

  14. #14
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 141
    Points : 9 979
    Points
    9 979
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    c'est ton utilisation de Intersect qui était à revoir

    essaye comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim MaPlage As Range
     
    For i = 0 To 22
     
        Set MaPlage = Range("E" & 673 + 3 * i & ":P" & 673 + 3 * i)
     
        If Not Intersect(Target, MaPlage) Is Nothing Then
            Worksheets("renouvel életro details").Activate
        End If
     
    Next i
     
    Set MaPlage = Nothing
     
    End Sub

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    En effet l'utilisation de Intersect n'était pas la bonne .... Merci joe.levrai

    Cependant le code s'applique sans prendre en compte les valeurs des cellules, c'est à dire quand je rentre la donnée "0" il m'envoie quand même sur l'onglet "renouvel életro details"

    Je vais essayer de résoudre cela ....

  16. #16
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    et ou il est le code qui teste la valeur entrée ?

  17. #17
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 141
    Points : 9 979
    Points
    9 979
    Billets dans le blog
    5
    Par défaut
    Ah c'était donc ça ton "<>0" !!

    bon c'est dans tes cordes cet ajustement, je ne donne pas la solution immédiatement

    là on détecte que tu as bien modifié une cellule de la plage souhaitée
    maintenant, il faut détecter que le changement effectué sur la cellule lui a attribué la valeur 0 pour que l'activation de feuille se fasse

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    bbil :
    et ou il est le code qui teste la valeur entrée ?
    Je ne comprend pas ??

  19. #19
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 141
    Points : 9 979
    Points
    9 979
    Billets dans le blog
    5
    Par défaut
    ta façon de coder la condition "je veux activer la feuille uniquement quand j'ai modifié une cellule dans une plage définie, et que la cellule modifié est égale à 0"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Application.Intersect(Target, Range("E" & 673 + 3 * i & ":P" & 673 + 3 * i)) <> 0 Then Worksheets("renouvel életro details").Activate
    était tellement obscure ... que moi-même j'ai mis du temps à comprendre ta démarche

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    hé hé désoler de ne pas être très claire, je pense que j'ai un peu de mal à m’expliquer ....

    Après 2h d'acharnement je n'arrive toujours pas à demander au code de prendre en compte le fameux "<> 0" ....

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AC-2007] Erreur de compilation: Variable non définie
    Par m1koo dans le forum VBA Access
    Réponses: 7
    Dernier message: 11/01/2014, 19h21
  2. [MySQL] Erreur sur variable non défini - défini
    Par BXDSPORT dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/07/2011, 16h38
  3. Erreur de compilation : Variable non définie
    Par Smallstone dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 12/07/2011, 09h32
  4. erreur compilation: variable non défini
    Par ngouagme dans le forum Langage
    Réponses: 8
    Dernier message: 07/07/2010, 16h38
  5. [AC-2003] Erreur de variable non définie
    Par piercleo dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/01/2010, 17h02

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