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 Range


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Points : 341
    Points
    341
    Par défaut Erreur Range
    Bonjour,

    Je souhaite créer un fichier de suivi de tournées fournisseurs. Chaque semaine je vais avoir des données à déplacer au sein de mon fichier (Feuille "Renseignement" -> Feuille "Historique des tournées").
    Je ne souhaite pas écraser les données transférer précédemment pour pouvoir faire des analyses par la suite.

    Au début tout se passe très bien jusqu'à la ligne 31 où j'ai l'erreur 1004 :
    Erreur défini par l'application ou par l'objet.
    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
    Sub Historique()
     
    'compteur de ligne dans la feuille de renseignement hebdomadaire
    Dim Ligne As Variant
    Ligne = Sheets("Renseignement").Range("A3:A" & Rows.Count).End(xlDown).Row
     
    'test si la seconde cellule de ma feuille est vide
    'Si oui : Alors on copie à partir de cette cellule
    'Si non : Alors on copie à la suite
     
    If Sheets("Historique des tournées").Cells(2, 1) = "" Then
     
        With Sheets("Renseignement")
            .Select
            .Range(Cells(3, 1), Cells(Ligne, 7)).Copy
        End With
     
        Sheets("Historique des tournées").Range("A2").PasteSpecial
     
    Else:
        With Sheets("Renseignement")
            .Select
            .Range(Cells(3, 1), Cells(Ligne, 7)).Copy
        End With
     
    Ligne = Sheets("Historique des tournées").Range("A1:A" & Rows.Count).End(xlDown).Row
     
        With Sheets("Historique des tournées")
            .Select
            .Range(Cells(Ligne + 1, 1)).PasteSpecial
        End With
     
    End If
     
    End Sub
    Après plusieurs recherches, je ne trouve pas la solution. Vous auriez une idée ?

    Merci,

    Bonne journée,

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Cells étant une propriété d'un objet de la feuille directrice du bloc With, doit donc être précédé du caractère "." qui le spécifie
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Bonjour,

    je pense qu'il y a un problème ici:
    Ligne = Sheets("Historique des tournées").Range("A1:A" & Rows.Count).End(xlDown xLUp).Row
    Tu souhaites bien récupérer la dernière ligne non vide ?
    Avec xlDown tu pars de la dernière ligne et tu descend encore donc tu ne bouge pas, et quand tu demande cells(Ligne + 1, ) tu dépasse les capacité d'Excel d'où l'erreur
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  4. #4
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Salut,
    Evite les selects pour accéder a une feuille, une cellule etc. Designes directement l'objet, ou affecte l'objet a une variable pour le manipuler a travers celle-ci. Tu eviteras ainsi beaucoup de problemes.
    Pour la ligne en gras, un argument est manquant, quand on accede a un range avec cells.
    Citation Envoyé par Trystan441 Voir le message
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            .Range(Cells(Ligne + 1, 1, cells(ligne+1, 1)).PasteSpecial
    ...
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Points : 341
    Points
    341
    Par défaut
    Bonjour,

    Merci beaucoup pour vos réponses,

    Halaster :
    J'ai testé ta réponse mais ça ne fonctionne pas, il me compte à partir de la cellule A3 mais vers le haut, donc ça me renvoi la valeur : 2 (j'ai 1084 lignes non vides)

    Unparia :
    Comment je peux faire pour pointer une zone de cellule à référence variable sans passer par : Range(Cells(..))

    NVCfrm :
    J'ai essayé d'insérer une variable faisant référence à une cellule, malheureusement je n'y suis pas encore arrivé. Je continu de chercher comment faire !

    Bonne journée,

Discussions similaires

  1. [FPS] La fonction Trunc renvoie une erreur "Ranges overrun"
    Par coolam dans le forum Autres IDE
    Réponses: 9
    Dernier message: 28/11/2016, 22h33
  2. Erreur Range([Liste]).Select quand liste trop longue
    Par Boris_Gem dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/04/2012, 14h55
  3. [XL-2000] Erreur 'Range' de l'objet '_global' a échoué apres une centaine d'itérations
    Par mollus dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/06/2011, 08h26
  4. [C#] erreur selectetedindex out of range datagrid
    Par mahboub dans le forum ASP.NET
    Réponses: 7
    Dernier message: 31/10/2005, 17h31

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