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 :

[Débutant] Aide pour "Object required"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut [Débutant] Aide pour "Object required"
    Bonjour,

    Je débute sur VBA et j'essaye de faire mes premières boucles. Pour l'instant, elles sont très basiques mais malgré ça je n'arrive pas à faire fonctionner la dernière. Je voudrais sur une plage de cellule précise multiplier par 1 les cellules dont la valeur est différente de zéro (dans l'absolu je voudrais faire cette opération si la cellule est non vide mais ça me paraît trop dur pour mon petit niveau).

    Voilà le code que j'ai entré :

    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
    Sub Macro1()
     
        Application.ScreenUpdating = False
     
            Dim Cell As Range
     
                Dim k As Byte, LR As Long
                k = 1
                LR = Range("A65536").End(xlUp).Row
     
                For Each Cell In ActiveSheet.Range(Cells(2, 2), Cells(LR, 2))
                If Cell.Value Is Not Null Then Cell.Value = Cell.Value * k
                Next Cell
     
        Application.ScreenUpdating = True
     
    End Sub
    Mais lors de l'exécution de la macro, j'ai un message d'erreur avec "Object required". Je ne sais pas du tout comment corriger ce problème qui me bloque

    Pourriez-vous SVP m'expliquer ce qui ne marche pas et éventuellement le code que je dois rentrer à la place du mien ?

    Merci d'avance !

    Runsh

  2. #2
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,
    C'est la syntaxe "Is Not Null" qui est ici mal employée. Elle ne doit être utilisée qu'avec un objet, pour vérifier qu'il est bien initialisé.
    Pour tester la valeur de Cell, il suffit d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cell.Value <> 0 Then

  3. #3
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    Un petit conseil :
    tu travailles avec excel 2007 alors plutot que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LR = Range("A65536").End(xlUp).Row
    préfères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LR = Range("A" & rows.count).End(xlUp).Row
    car la V2007 a plus de 100 000 lignes, au cas où....

    Morceau de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With ActiveSheet
       LR = .Range("A" & .Rows.Count).End(xlUp).Row
       For Each Cell In .Range(Cells(2, 2), Cells(LR, 2))
          If Cell.Value <> 0 Then Cell.Value = Cell.Value * k
       Next Cell
    End With
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    Bonjour Messieurs,

    Merci à tous les deux pour vos réponses très utiles et très bien expliquées.
    Vous souhaitant une bonne journée !

    Runsh

    Re bonjour,

    Maintenant j'ai un nouveau problème malheureusement avec le bout de code nouvellement écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    With ActiveSheet
     
        Dim k As Byte, LR As Long
        k = 1
        LR = .Range("A" & .Rows.Count).End(xlUp).Row
     
            For Each Cell In .Range(Cells(2, 2), Cells(LR, 2))
          If Cell.Value <> "" Then Cell.Value = Cell.Value * k
       Next Cell
    End With
    J'ai un message d'erreur "Type mismatch" et c'est ce bout de code qui est surligné en jaune :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cell.Value = Cell.Value * k
    D'où celà vient-il ? Comment le corriger SVP ?

    Merci !

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    es-tu sur que Cell.Value est une valeur numérique ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    Non justement, ce sont des numéros de compte que j'exporte d'Access, dans lequel le champ "compte" est laissé en texte car certain étant de type 354/1 ou en encore 60221-23, je n'ai pas pu faire un CNum sur le champ sous peine de perdre les données.
    Normalement, la manip' à faire en "manuel" sous Excel est de sélectionner tous les numéros de compte et de coller en valeur avec l'opération multiplier une cellule sur laquelle on a mis 1. Dans l'absolu, je peux faire cette macro en passant par l'enregistreur, mais j'ai lu dans les cours proposés par ce forum que c'est du développement "à la papa" et que ce n'est pas comme celà qu'on progresse. Je tâtonne beaucoup mais je me suis dit que le faire via une boucle pouvait être sympa et me faire progresser. L'embêtant c'est que je ne suis pas assez confirmé, d'où mon besoin d'aide toutes les deux minutes...

Discussions similaires

  1. [Débutant] aide pour prog
    Par momocdp dans le forum C
    Réponses: 12
    Dernier message: 23/10/2006, 21h18
  2. [XHTML] [Débutant] Aide pour navigation avec cadres
    Par calogerogigante dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 19/06/2006, 00h43
  3. [VBA-E][débutant]aide pour macro sous excel
    Par julyBL dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 09/06/2006, 23h42
  4. [débutant] Aide pour mettre une FOREIGN KEY sur une table
    Par cauldron dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/11/2004, 18h16

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