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 :

[VB-E] Erreur 1004 dans une boucle For


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 8
    Points
    8
    Par défaut [VB-E] Erreur 1004 dans une boucle For
    Bonjour à tous,

    J'obtiens une erreur 1004 au moment de modifier la valeur de la cellule
    "Ai".


    Je ne comprends pas pour quelle raison.


    En effet, en faisant un copier coller de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=VLOOKUP(D" & i & ";'" & Workbooks(NomClasseurNouveauOrga).Worksheets(2).Name & "'!C1:IV65536;254;FALSE)"
    (après calcul) dans mon fichier cible, ça
    fonctionne parfaitement. Ce n'est donc pas la syntaxe qui est mauvaise.


    J'ai une option Explicit qui m'interdit les erreurs de déclaration de
    variables normalement.


    Est ce que vous voyez pourquoi ça plante ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim i As Long 
    For i = 7 To Cells(Rows.Count, 2).End(xlUp).Row 
    Range("A" & i).Value = "=VLOOKUP(D" & i & ";'" & Workbooks(NomClasseurNouveauOrga).Worksheets(2).Name & "'!C1:IV65536;254;FALSE)" 
    Next

    Merci à tous,


    Lycaon.

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    plutôt

  3. #3
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    La plupart du temps, l'erreur 1004 vient d'un appel à un objet Excel qui n'existe pas.
    Un exemple:
    Il n'existe pas de Row(0).
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Merci pour ta réponse.

    Ca me donne la même chose. J'ai aussi essayé .Text, .Formula R1C1 mais c'est pareil.

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par AlainTech
    La plupart du temps, l'erreur 1004 vient d'un appel à un objet Excel qui n'existe pas.
    Un exemple:
    Il n'existe pas de Row(0).
    Ici, j'ai éxécuté "manuellement" l'action que je lui demande en utilisant les valeurs calculées par Excel (en mettant un watch sur l'expression contenant le vlookup) et tout va bien... mais il ne veut pas le faire tout seul !!!

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Essaye:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A" & i).Value = i
    Pour voir si le problème ne vient pas d'une valeur prise par i
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  7. #7
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    c'est bien avec formula mais il faut remplacer les ; par des virgules.

    Du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A" & i).Formula = "=VLOOKUP(D" & i & ",'" & Workbooks(NomClasseurNouveauOrga).Worksheets(2).Name & "'!C1:IV65536,254,FALSE)"

  8. #8
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par bidou
    c'est bien avec formula mais il faut remplacer les ; par des virgules.

    Du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A" & i).Formula = "=VLOOKUP(D" & i & ",'" & Workbooks(NomClasseurNouveauOrga).Worksheets(2).Name & "'!C1:IV65536,254,FALSE)"

    Merci beaucoup!!!!
    C'est tellement stupide comme erreur que je n'ai même pas pensé à vérifier la syntaxe de vlookup...

    Encore merci

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    C'est résolu, alors?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. Erreur dans une boucle For
    Par j0joo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/08/2014, 14h41
  2. Réponses: 2
    Dernier message: 02/08/2011, 17h51
  3. Shell - Erreur dans une boucle for
    Par claralavraie dans le forum Linux
    Réponses: 4
    Dernier message: 11/01/2006, 13h45
  4. [batch] incrémentation dans une boucle for
    Par bart64 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 08/09/2004, 20h05
  5. Réponses: 3
    Dernier message: 06/07/2004, 10h21

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