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 494 Objet Requis [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Agent administratif
    Inscrit en
    Juin 2022
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Agent administratif
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2022
    Messages : 45
    Points : 31
    Points
    31
    Par défaut Erreur 494 Objet Requis
    Bonjour,
    J'ai écrit ce code mais je ne comprends pas pourquoi il ne fonction ne pas.

    Sub RemplacerAttribut()


    'Définition des variables
    Dim Compte As Range 'Colonne "B" onglet Prérequis
    Dim Valeur As Variant 'Colonne "E" onglet Prérequis
    Dim Attribut As Variant 'Colonne "D" onglet Prérequis

    Dim NOCPCI As Range 'Colonne "N" onglet ESTD
    Dim Entete As Range 'Ligne "1" onglet ESTD

    Dim ColumNumber As Variant 'Numero de colonne onglet ESTD

    Worksheets("Correction_Prérequis").Activate

    'Recherche des valeurs
    For Each Compte In Range("b2", Range("b1048576").End(xlUp))
    'Valeur de l'attribut
    Attribut = Compte.Offset(0, 2).Value
    'Valeur à changer
    Valeur = Compte.Offset(0, 3).Value
    'Activer la feuille ESTD
    Worksheets("ESTD").Activate
    'Plage de compte à vérifier
    Set NOCPCI = Range("N2", Range("n1048576").End(xlUp))
    NOCPCI.Select
    Do Until ActiveCell.Value = ""
    If ActiveCell.Value = Compte.Value Then
    'Slection des entetes de colonnes
    Set Entete = Range("N1:ED1")
    Entete.Select
    'Définition du numéro de colonne dans l'entete
    ColumNumber = Application.WorksheetFunction.Match(Attribut, Entete, 0)
    'ColumNumber =
    'Changement de valeur de la cellule concerné
    NOCPCI.Offset(0, ColumNumber).Value = Valeur.Value
    'Passer à la ligne suivante
    ActiveCell.Offset(1, 0).Select
    End If
    'Passer à la ligne suivante
    ActiveCell.Offset(1, 0).Select
    Loop
    Next Compte

    MsgBox "Traitement terminé"


    End Sub


    Il m'indique l'erreur 494 (Objet requis) sur la ligne NOCPCI.offset(0,ColumNumber).value=Valeur.value

    Je remercie par avance la personne qui va pouvoir m'aider.

    Au plaisir de vous lire

  2. #2
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Points : 1 156
    Points
    1 156
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Valeur = Compte.Offset(0, 3).Value
    ' ... / ...
    NOCPCI.Offset(0, ColumNumber).Value = Valeur.Value
    Valeur a été initialisé avec un contenu de cellule. C'est donc une variable scalaire, pas un objet (il aurait fallu faire un Set Valeur = Compte.Offset(0, 3))
    Donc un "=Valeur" devrait marcher beaucoup mieux, en l'état.

    Nb1 : dans tes messages, mets le code entre balises [ code] [/code ] (bouton #) ça sera plus joli (plus lisble)
    NB2 : le code est compliqué par l'utilisation des références implicites et les select active etc., qui peuvent induire des effets de bords, risque de loupé etc.

    Utilise chaque fois que possible les références explicites, ça sera à la fois plus lisible et plus robuste.
    Ça pourrait ressembler à (pas testé) :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Sub RemplacerAttribut()
     
    'Définition des variables
    Dim Compte As Range 'Colonne "B" onglet Prérequis
    Dim Valeur As Variant 'Colonne "E" onglet Prérequis
    Dim Attribut As Variant 'Colonne "D" onglet Prérequis
     
    Dim NOCPCI As Range 'Colonne "N" onglet ESTD
     
    Dim ColumNumber As Integer 'Numero de colonne onglet ESTD
     
    Dim ShCP As Worksheet
    Dim ShESTD As Worksheet
     
    Set ShCP = Worksheets("Correction_Prérequis")
     
    'Recherche des valeurs
    For Each Compte In ShCP.Range("b2", ShCP.Range("b1048576").End(xlUp)).Cells
        'Valeur de l'attribut
        Attribut = Compte.Offset(0, 2).Value
        'Valeur à changer
        Valeur = Compte.Offset(0, 3).Value
        'Plage de compte à vérifier
        For Each NOCPCI In ShESTD.Range("N2", ShESTD.Range("n1048576").End(xlUp)).Cells
            If NOCPCI.Value = Compte.Value Then
                'Définition du numéro de colonne dans l'entete
                ColumNumber = ShESTD.Range("N1:ED1").Find(Attribut).Column ' colonne qui contient le type
                'Changement de valeur de la cellule concerné
                NOCPCI.Offset(0, ColumNumber).Value = Valeur
            End If
        Next NOCPCI
    Next Compte
     
    MsgBox "Traitement terminé"
     
    End Sub
    Il y aurait encore pas mal à dire mais c'est déjà mieux

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Agent administratif
    Inscrit en
    Juin 2022
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Agent administratif
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2022
    Messages : 45
    Points : 31
    Points
    31
    Par défaut
    Je te remercie pour ton retour et la simplification de mon code.
    La macro coince au niveau de :

    For Each NOCPCI In ShESTD.Range("N2", ShESTD.Range("n1048576").End(xlUp)).Cells

    L'erreur indiquée est le code 91.
    Variable objet ou variable de bloc with non définie.

    Merci pour ton aide

  4. #4
    Membre expérimenté
    Inscrit en
    Décembre 2002
    Messages
    871
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 871
    Points : 1 365
    Points
    1 365
    Par défaut
    Salut, je pense qu'il manque

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set ShESTD = Worksheets("ESTD")

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Agent administratif
    Inscrit en
    Juin 2022
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Agent administratif
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2022
    Messages : 45
    Points : 31
    Points
    31
    Par défaut
    Le code fonctionne.
    Le numéro de colonne n'est pas correcte. Il indique le numéro 130 ce qui correspond à la position de la colonne dans la cellule.
    Il aurait du indiquer le numéro 117 qui est la position de la colonne dans la sélection N:ED

  6. #6
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Points : 1 156
    Points
    1 156
    Par défaut
    Re,

    merci Franc ,
    et effectivement le numéro de colonne renvoyé est absolu donc (testé)


    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub RemplacerAttribut()
     
    'Définition des variables
    Dim Compte As Range 'Colonne "B" onglet Prérequis
    Dim Valeur As Variant 'Colonne "E" onglet Prérequis
    Dim Attribut As Variant 'Colonne "D" onglet Prérequis
     
    Dim NOCPCI As Range 'Colonne "N" onglet ESTD
     
    Dim ColumNumber As Integer 'Numero de colonne onglet ESTD
     
    Dim ShCP As Worksheet
    Dim ShESTD As Worksheet
     
    Set ShCP = Worksheets("Correction_Prérequis")
    Set ShESTD = Worksheets("ESTD")
     
    'Recherche des valeurs
    For Each Compte In ShCP.Range("b2", ShCP.Range("b1048576").End(xlUp)).Cells
        'Valeur de l'attribut
        Attribut = Compte.Offset(0, 2).Value
        'Valeur à changer
        Valeur = Compte.Offset(0, 3).Value
        'Plage de compte à vérifier
        For Each NOCPCI In ShESTD.Range("N2", ShESTD.Range("n1048576").End(xlUp)).Cells
            If NOCPCI.Value = Compte.Value Then
                'Définition du numéro de colonne dans l'entete
                ColumNumber = ShESTD.Range("N1:ED1").Find(Attribut).Column ' colonne qui contient le type
                'Changement de valeur de la cellule concerné
                NOCPCI.EntireRow.Cells(ColumNumber).Value = Valeur
            End If
        Next NOCPCI
    Next Compte
     
    MsgBox "Traitement terminé"
     
    End Sub

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Agent administratif
    Inscrit en
    Juin 2022
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Agent administratif
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2022
    Messages : 45
    Points : 31
    Points
    31
    Par défaut
    Merci beaucoup tous les 2.
    Ce code va beaucoup m'aider pour les autres que j'aie à effectuer

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

Discussions similaires

  1. Find - Erreur 424 - Objet requis
    Par wilfried_42 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/02/2009, 09h42
  2. erreur 424, objet requis
    Par Nessie37 dans le forum VBA Access
    Réponses: 8
    Dernier message: 08/01/2009, 12h20
  3. Erreur 424 objet requis
    Par davyvba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/06/2008, 17h52
  4. erreur "424" Objet requis
    Par fifrelin_70 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 29/10/2007, 19h48
  5. Erreur 424 Objet requis sur connexion à Access
    Par darkian dans le forum ASP
    Réponses: 4
    Dernier message: 21/06/2006, 11h32

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