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 :

Parcourir une plage de cellules


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 21
    Points : 8
    Points
    8
    Par défaut Parcourir une plage de cellules
    Bonjour,

    je tente de faire une macro qui parcourt une plage de cellule sur la première colonne à partir de la ligne 14 jusqu'à la dernière cellule non vide de la colonne.

    J'ai trouvé une multitude de méthodes sur internet mais aucune ne fonctionne chez moi.

    Voila mon premier code (qui ne marche pas donc):

    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
    Set sht = ThisWorkbook.Worksheets("Liste films")
    DerniereLigneEnA = sht.Range("A:A").Find("*", , LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
     
     
    p = 0
    t = 0
    For Each rng In sht.Range("A14:A" & DerniereLigneEnA)
        With rng
             If rng.EntireRow.Hidden = False Then
                Range("K7") = DerniereLigneEnA
                p = p + 1
                If Sheets("Liste films").Cells(6, 17) = "titres originaux" Then
                   t = t + rng.Offset(0, 6)
                Else
                   t = t + rng.Offset(0, 30)
                End If
             End If
        End With
    Next
    Le problème est que la boucle devrait commencer à partir de la ligne 14 mais la ligne 13 est quand même parcourue, d'ailleurs la dernière ligne calculée est la ligne 13 (comme par hasard).

    Pour préciser le contenu de la colonne 1: les cellules 2 et 13 contiennent du texte, les cellules de la ligne 14 à 448 contiennent du texte en lien hypertexte et tout le reste est vide.

    Quelqu'un peut-il m'aider en me disant ce qui cloche s'il vous plait?

    Merci.

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    ton code est si confus que je ne comprends pas ton but, mais pour trouver la dernière ligne, tu peux utiliser cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigneEnA = sht.Range("A" & sht.Rows.Count).End(xlUp).Row
    et pui commencer ta boucle, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For x = 14 to DerniereLigneEnA
        If Range("A" & x)....Then
    '.......
     
    Next x
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur 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...)

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DerniereLigneEnA = sht.Cells(Rows.count, "A").End(xlup).row
     
    For i = 14 to DerniereLigneEnA
       .....
    Next
    Et plutôt que rng.Offset(x, y), tu peux utiliser l'adresse du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("A" & i) = "ce que tu cherches" then
    casefayere, on s'est croisé...
    mais je pense que l'idée est commune...
    MPi²

  4. #4
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 696
    Points
    6 696
    Par défaut
    Bonjour,

    Tu veux parcourir un range, le plus pratique est peut-être de placer ta plage cible dans une variable objet, du coup tu as une structure Each très claire et très portable du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each Cell In MaPlageCible
     
    ' code…
     
    Next Cell
    casefayere & parmi t’ont donné comment déterminer ta dernière ligne, tu connais la première, instancier ta variable Range sera aisé, voir les nombreux tutos si besoin sur DVP


    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup pour vos indications, ca marche impeccablement maintenant.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/03/2014, 08h06
  2. [VBA] Copier une plage de cellules dans un fichier fermé
    Par SFrane dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/01/2006, 16h52
  3. [VBA] Parcourir une plage de cellule
    Par Dinytro dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/09/2005, 08h18
  4. [VBA-E] Image d'une plage de cellule
    Par flogreg dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/07/2004, 12h30
  5. [VBA-E] [Excel] Protection d'une plage de cellules
    Par fikou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/11/2002, 11h28

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