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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2023
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2023
    Messages : 26
    Par défaut Variable objet ou variable de bloc with non définie
    Bonjour à tous,

    J'ai un souci au lancement de mon code, cela m'indique : Variable objet ou variable de bloc with non définie
    Cela semble lié a la ligne :



    J'avoue ne pas en comprendre la raison et que faire, si vous pouviez m'aider ?
    Merci d'avance à vous

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 178
    Par défaut
    Hello,
    essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each numCell In ws.Range("A2:A" & CStr(lastRowGlobal))
    ou alors
    sans préciser as Range

    Ami calmant, J.P

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2023
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2023
    Messages : 26
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Hello,
    essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each numCell In ws.Range("A2:A" & CStr(lastRowGlobal))
    ou alors
    sans préciser as Range

    Ami calmant, J.P
    Malheureusement cela ne change rien peu importe la solution

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 288
    Par défaut il faut donner la valeur à WS
    Bonjour,
    Il faut ajouter Set ws = nom de la feuille car ws n'est pas identifié

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2023
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2023
    Messages : 26
    Par défaut
    Citation Envoyé par mach1974 Voir le message
    Bonjour,
    Il faut ajouter Set ws = nom de la feuille car ws n'est pas identifié
    C'est pourtant le cas :

    Set ws = ThisWorkbook.Sheets("Global")

  6. #6
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 484
    Par défaut
    Salut,
    Quelques réflexions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ActiveSheet.Name = "Global"
    Ceci peu amener à des résultats inattendus. Si tu a créé un feuille en amont nommes-la lors de la création.

    Idem pour cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ActiveCell.Row <> lastRow Then
    Ici tu déclares lastRow au niveau de la procédure et tu ne l'a pas affecter il est donc toujours égal à 0, l'utilisation de Activecell peut aussi provoquer des résultats inattendus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set ws = ThisWorkbook.Sheets("Global")
    Ici tu affecte la variable ws c'est bien , mais plus bas tu utilises
    Là encore des résultats inattendus peuvent arrivés préfère lui
    Et encore mieux null besoin de faire des Select.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("B:B").ColumnWidth = 6#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Dim sheetOld As Worksheet
        On Error Resume Next
        Set sheetOld = ThisWorkbook.Sheets("OLD")
        On Error GoTo 0
    Ce n'est pas une bonne habitude que d'utiliser On Error pour ce type de contrôle, plus haut tu as fait une boucle tu peux refaire la boucle pour vérifier sa présence ou mieu te créer une fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wsGlobal = ThisWorkbook.Sheets("Global")
    Ici tu affectes une variable wsGlobal à la feuille "Global" alors que ws fait déjà référence à cette feuille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lastRowGlobal = wsGlobal.Cells(wsGlobal.Rows.Count, "A").End(xlUp).Row
    Puisque la feuille Global contient un tableau structuré utilises les outils adaptés aux tableaux structurés
    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
        Dim MonTableau As ListObject    Set MonTableau = ThisWorkbook.Worksheets.Item("Global").ListObject
        With MonTableau
            Debug.Print .ListRows.Count        'Nombre de lignes
     
            Dim IDCell As Range
            For Each IDCell In .ListColumns.Item("ID").DataBodyRange        'boucle sur les cellules de la colonne "ID"
                Debug.Print IDCell.Value
            Next IDCell
     
            Dim NewRow As ListRow
            Set NewRow = .Add        'Ajoute une ligne à la fin
            With NewRow
                .Range(MonTableau.ListColumns("Total").Index).Value = 100        'Utilisation du nom de la colonne plus explicite que Range("B" & LastRow)par exemple
            End With
        End With
    Bon et là je ne vais pas plus loin car j'ai du wsGlobal, ws, wsOld

    Pour ton erreur je pense que tu dois faire un nettoyage au niveau de tes affectations. ws, wsGlobal et wsOld et supprimer celles qui ne sont plus nécessaires. en les passant à Nothing.

  7. #7
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    975
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 975
    Par défaut
    Bonjour, je vois que tu utilises plusieurs fois l'instruction Set mais les variables n'ont pas été déclarées auparavant, par exemple Set commentairesRangeGlobal...
    Tu devrais activer Option Explicit, ça t'évitera pas mal d'erreurs par la suite.
    Je constate aussi que tu affectes la même feuille à 2 variables:

    Set ws = ThisWorkbook.Sheets("Global") et Set wsGlobal = ThisWorkbook.Sheets("Global")

  8. #8
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 484
    Par défaut
    Re,
    Je vois que tu boucles sur ws
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        For Each ws In ThisWorkbook.Sheets        If ws.Name <> "OLD" Then ' Exclure la feuille "OLD"
                SurlignerEnAttente ws
            End If
        Next ws
    Sait-tu sur quelle feuille s'est arrêtée la boucle ?
    ensuite tu essais de faire une autre boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each numCell In ws.Range("A2:A" & lastRowGlobal)
    Mais tu n'est peut-être pas sur la bonne feuille... Il te faut un peu plus de rigueur dans ta programmation.

  9. #9
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2023
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2023
    Messages : 26
    Par défaut Erreur due a l'apel de la macro
    Ok, après analyse, si je résous une erreur, cela en génère d'autre, j'ai donc 2 possibilités : réparer chaque erreur apparaissant, ou intégrer différemment

    Mon code suivant fonctionne bien :


    Du coup au lieu d'appeler cette macro, est il possible de l'intégrer a mon code existant ?
    en sachant que je voudrais que cette colorisation s'effectue après les autres vu que je la veux dominante

Discussions similaires

  1. 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
  2. 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
  3. Réponses: 3
    Dernier message: 12/10/2007, 03h26
  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