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 :

Message d'erreur nombre d'arguments incorrect


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2016
    Messages : 2
    Par défaut Message d'erreur nombre d'arguments incorrect
    Bonjour Tout le monde,

    Je fais mes premiers pas en VBA en essayant de créer mes propres macro...un vrai casse tête

    Quand je lance ma macro, le message suivant apparaît:
    Erreur de compilation : Nombre d'arguments incorrect ou affectation de propriété incorrecte.
    A quoi cela peut être dû?

    Ci-dessous le programme:

    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
    Sub Nettoyage_org()
     
    Sheets("Calendrie").ActiveSheet
     
    'On commence par supprimer les colonnes inutiles
     
    Columns("F:J").Select
    Selection.Delete Shift:=xlToLeft
     
     
    Columns("D: D").Select
    Selection.Delete Shift:=xlToLeft
     
    Columns("B:B").Select
    Selection.Delete Shift:=xlToLeft
     
     
    For i = 1 To 400
    If (Cells(i, 2).Value = "FR") Or (Cells(i, 2).Value = "ES") Or (Cells(i, 2).Value = "DE") Or (Cells(i, 2).Value = "UK") Or (Cells(i, 2).Value = "IT") Or (Cells(i, 2).Value = "BE") Then
    Cells(i & "A", i & "B", i & "C").Select
    Selection.Copy
    Cells(i & "11").Paste
     
    End If
    Next i
     
    End Sub
    Sauriez-vous me dire où j'ai fait l'erreur s.v.p. ?

    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour,
    Tu ecris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i & "A", i & "B", i & "C")
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A" & I & ":" & "C" & I).Copy
    Cells(I, 11).PasteSpecial
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    C'est du grand n'importe quoi qui met en évidence que tu te "jettes" dans le développement sans même cerner les rudiments.
    En plus de la remarque justifiée de Eric459,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Calendrie").ActiveSheet
    n'a aucun sens. ActiveSheet est ici par défaut une propriété de l'application et non une méthode

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Petit conseil en passant pour ton test If :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr("FR-ES-DE-UK-IT-BE", Cells(i, 2).Value) > 0 Then
    Ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select Case Cells(i, 2).Value
    Case "FR", "ES", "DE", "UK" ,"IT", "BE"
    C'est plus simple et plus propre, non ?

    Et remplace tout ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sheets("Calendrie").ActiveSheet
     
    'On commence par supprimer les colonnes inutiles
     
    Columns("F:J").Select
    Selection.Delete Shift:=xlToLeft
     
     
    Columns("D: D").Select
    Selection.Delete Shift:=xlToLeft
     
    Columns("B:B").Select
    Selection.Delete Shift:=xlToLeft
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sheets("Calendrie").Activate
    Columns("F:J").Delete Shift:=xlToLeft
    Columns("D").Delete Shift:=xlToLeft
    Columns("B").Delete Shift:=xlToLeft
    Citation Envoyé par unparia Voir le message
    C'est du grand n'importe quoi qui met en évidence que tu te "jettes" dans le développement sans même cerner les rudiments.
    Du calme... Il faut encourager les efforts louables.

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Le premier effort, Menhir, est celui de lecture.
    Le second est de ne pas écrire "au hasard", mais en vérifiant au moins le sens de ce que l'on écrit.
    Amitiés

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Du calme... Il faut encourager les efforts louables.
    Et même encourager "l'abus" de UCase() ou de LCase() et la prudence dans l'utilisation des expressions logiques. Parce que les comparaisons de texte, les OR et les AND ne sont pas aussi tolérants que le cerveau humain avec les différences dans la casse ou les ambigüités dans les comparaisons.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2016
    Messages : 2
    Par défaut
    Bonjour tout le monde,

    Problème résolu, ça fonctionne ! Merci d'avoir fait preuve de patience Eric et Menhir!

    Ci-dessous le résultat final :

    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
    Sub Nettoyage_org()
     
    Sheets("Calendrier").Activate
    Columns("F:J").Delete Shift:=xlToLeft
    Columns("D").Delete Shift:=xlToLeft
    Columns("B").Delete Shift:=xlToLeft
     
    For i = 1 To 50
     
    If InStr("FR-ES-DE-UK-IT-BE", Cells(i, 2).Value) > 0 Then
     
    Range("A" & i & ":" & "C" & i).Copy
    Cells(i, 11).PasteSpecial
     
    End If
    Next i
     
    End Sub
    Bonne journée et merci encore!

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

Discussions similaires

  1. Appel construteur : nombre d'argument incorrect
    Par bakman dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 21/07/2010, 11h30
  2. Réponses: 3
    Dernier message: 24/12/2008, 12h57
  3. [E-07] : Message d'erreur : "Bibliothèque d'objets incorrecte "
    Par nazimyenier dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/12/2008, 15h03
  4. Réponses: 27
    Dernier message: 07/08/2008, 13h22
  5. Message d'erreur 'opération de pointeur incorrecte'
    Par Clotilde dans le forum Langage
    Réponses: 3
    Dernier message: 05/06/2008, 09h40

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