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 :

Overflow car pb de définition de LastRow [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de camzo
    Homme Profil pro
    ingénieur en documentation
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur en documentation
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Points : 101
    Points
    101
    Par défaut Overflow car pb de définition de LastRow
    Bonjour (encore) à tous,

    Je suis confronté à un Overflow. Mes tests sur peu de données fonctionnaient mais, maintenant que je l'applique sur près de 75000 lignes sur ma feuil1, ça plante!

    Voici mon code d'entrée que j'applique sur ma Fuil1, probablement un peu "crade" car pas pro, mais je ne vois pas où ça cloche sur ce point précis vu que cela fonctionnait sur environ 100 lignes.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub YAMAL()
     
    Dim LastRow As Long, i As Integer
    LastRow = WorkSheets("Feuil1").Range("A1").SpecialCells(xlCellTypeLastCell).Row
     
        With ActiveSheet.Range("A:A")
            For i = LastRow To 2 Step -1
                With .Cells(i, 1)
                    If IsEmpty(.Value) = True Then ...
                End With
            Next i
        End With
    ...
    End Sub
    Pour info, je peux rencontrer quelques cellules vides dans la colonne A, donc j'ai tenté le Range("B1") mais cela ne change rien.

    La ligne qui plante est For i = LastRow To 2 Step -1.
    Quand je survole avec ma souris le LastRow, j'ai bien 75014 (le nombre de lignes).

    Là, je bloque. Sauriez-vous où ça cloche ?

    J'ai fait quelques recherches et je vois qu'il est possible d'identifier la dernière ligne de plusieurs manière (voir ici), peut-être une solution sort-elle du lot mais je ne saurais dire laquelle.

    Cordialement,
    Camzo

  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
    Sauriez-vous où ça cloche ?
    A la limite d'un integer (ce en quoi tu as typé ta variable i), pardi.
    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
    Membre régulier Avatar de camzo
    Homme Profil pro
    ingénieur en documentation
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur en documentation
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Points : 101
    Points
    101
    Par défaut
    en un mot: jesuisunebrèle

    Merci... désolé pour l'ouverture du ticket à la...

    Et évidemment, ça marche maintenant...

    Camzo

  4. #4
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonsoir Camzo,

    Voilà 3 discussions que tu posts quasi d'affilé avec une étrange ressemblance dans la direction prise au niveau du code avec de grandes similitudes.
    je me demande si il ne s'agit pas du même sujet ? Si c'est le cas il aurait mieux fallu continuer dans une même discussion (sachant que l'on peut rencontrer des problèmes du genre comme ici).

    Dans les contributions, il y en a une concernant les dernières lignes : Dernière ligne et la dernière colonne renseignées d'une feuille

    Pour l'erreur rencontrée ici, si tu avais bien lu ta précédente discussion, tu l'aurais surement évitée : Post #5

    Quoiqu'il en soit tu reviens à a chaque fois avec une boucle de la dernière ligne jusqu'à la 2ème, … surement à des fins de suppression de lignes … ??

    Dans un code VBA ce qui est le plus chronophage c'est la suppression de ligne (Delete), en supprimant les lignes 1 à 1 dans une boucle (surtout si tu as bcp de lignes) ça va te prendre pas mal de temps;
    et je sais de quoi je parle car j'avais ouvert un sujet (fait une recherche à Doublons spécifiques) où l'on peut dire que j'ai fait mes classes (coucou Marc ) amenant à cette conclusion
    Sur une autre discussion dont @unparia (coucou Jacques ) à démontrer l'efficacité des formules sur les doublons (tests fait, si je me rappelle bien, sur 200 000 lignes),
    permet d'éviter l'utilisation de boucle (qui peut être chronophage dans certains cas).

    PS : Moi aussi je suis sur Mac, en général je m'arrange pour que mes codes marchent aussi bien sur Mac que sur PC
    Que ca soit des doublons, des cellules vides, ou autres cela peut se faire avec des formules et sans boucles (on peut même combiner plusieurs cas dans une seule formule …)

    Voilà
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  5. #5
    Membre régulier Avatar de camzo
    Homme Profil pro
    ingénieur en documentation
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur en documentation
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Points : 101
    Points
    101
    Par défaut
    Bonjour RyuAutodidacte,

    Tu as tout à fait raison. Il faut absolument que je change ma façon de penser le code. Un mélange d'enthousiasme et de fatigue!

    Pour être honnête, j'ai fait ma première macro courant semaine dernière (il n'est jamais trop tard), car mon top management m'y a contraint. Bien évidemment, on me demande plus qu'un affichage Hello World! J'ai donc fait au mieux avec mes doigts et ma tête (et dire que je demande une formation VBA depuis 3 ans...). Le tout fonctionne (étrangement) mais je vois bien que cela peut être beaucoup mieux.

    La réponse que tu m'as apporté sur l'autre post est effectivement à creuser. Mes macros fonctionnent au ralenti. Je pense que je m'y pencherai ce week-end, après quelques heures de sommeil et un peu de temps pour tout remettre à plat. Désolé de ne pas avoir continuer le sujet, je pensais vraiment que cela était différent. Je ferai plus attention à l'avenir.

    Une chose est sûre, je vais m'y mettre car je vais avoir besoin de traiter des milliers de données tant le projet d'ingéniérie sur lequel je travaille m'y oblige (du suivi de validation de documents d'étude pour être un peu plus précis). Et les confrères comptent sur moi pour que je leur transmette ensuite ce que j'ai appris / appliqué pour optimiser leur travail sur d'autres projets. Bref, interdit de pondre n'importe quoi n'importe comment. Enfin, la solution serait d'avoir un VRAI pro du codage VBA mais cela ne semble pas à l'ordre du jour...

    J'espère du coup pouvoir revenir vers vous au plus vite, avec une autre conception du code, moins lourd et plus efficace!

    J'en profite pour tous vous remerciez pour le temps pris à expliquer et clarifier la marche à suivre! C'est un véritable plaisir. Je travaille depuis environ 12 ans et je dois reconnaître que mes meilleures sources pour apprendre reste en général GOOGLE et DEVELOPPEZ.NET! Alors continuez svp, au nom de tous ceux qui sont dans la même situation que moi (on doit être bien bien bien nombreux).

    Cordialement,
    Camzo

  6. #6
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Re,

    J'espère du coup pouvoir revenir vers vous au plus vite, avec une autre conception du code, moins lourd et plus efficace!
    Le tout avant de commencer et d'avoir de bonnes lectures essentielles pour bien débuter :
    - Excel et l'enregistreur de macro
    - Utiliser les variables en VBA Excel
    - Ecrire une formule dans Excel à l'aide d'une procédure VBA
    - Ecrire une formule dans Excel à l'aide d'une procédure VBA (Part 2)
    - Les filtres avancés ou élaborés dans Excel
    - Description de l'objet Feuille de calcul dans Excel
    - Les classeurs
    - Conceptualisation des variables tableau en VBA et Application à l'optimisation du code sous Excel
    - Utiliser les variables tableaux en VBA Excel

    cela parait beaucoup mais en s'y mettant bien et en faisant de mini tests ça peut être assez rapide, ça occupera bien le week-end

    Ha oui j'oubliais, chose très importantes, coder dans Excel Mac 2016 c'est galère, alors si tu peux récupérer une version de Excel 2011 (Mac) se serait mieux
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  7. #7
    Membre régulier Avatar de camzo
    Homme Profil pro
    ingénieur en documentation
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur en documentation
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Points : 101
    Points
    101
    Par défaut
    Merci pour les liens et j'ai commencé par... le premier.

    Une légère impression de revenir sur les bancs de la fac avec mes p'tites fiches... Ça fait grave du bien.

    Sinon je suis passé de Mac à Windows dans l'intitulé de mon message (boulette), ton message rouge ayant été percutant cette fois-ci.

    Camzo

  8. #8
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Re,

    Sache quand meme une chose concernant l'enregistreur de macro, il permet de livrer un code sur un plateau, mais le code est à optimiser par la suite.
    Il faut se défaire de tout ce qui est : Select, Activate … etc .
    Mais c'est bon début pour avoir une base sur laquelle travailler. L'experience et les conseils faisant le reste, et bien sur le travail personnel soit par la faq soit par les recherches
    Et pour les blocages, le forum.

    Chose importante, utiliser le code en pas à pas avec F8 en ayant la fenêtre des variables locales ouvert afin de suivre ce que fait le code, cette fenêtre donne toutes les informations nécessaires
    afin de de comprendre ce qui s'y passe
    Les MsgBox et Debug.Print sont aussi utiles afin de vérifier la/les valeur(s) d'une/des variable(s) dans le code …

    Pas de souci pour Mac à Windows sachant que je code la plupart du temps pour que le code soit bi-plateforme

    Bonnes lectures Mr l'étudiant
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/07/2003, 12h52
  2. [LG]floation point overflow
    Par mikoeur dans le forum Langage
    Réponses: 8
    Dernier message: 10/07/2003, 12h51
  3. [Sybase] Définition des symboles
    Par SoaB dans le forum Sybase
    Réponses: 5
    Dernier message: 19/03/2003, 23h06
  4. Définition de "Métalangage"
    Par No dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 19/07/2002, 14h05

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