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 un range de longueur variable de bas en haut [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 12
    Par défaut parcourir un range de longueur variable de bas en haut
    Bonjour,

    Comment puis-je parcourir un range d'un nombre de lignes variable de la dernière ligne vers la première (du range mais pas de la feuille) pour supprimer certaines lignes selon une condition ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set fin = Worksheets("Feuil1").Range("A5").End(xlDown)
     
    For Each cell in Worksheets("Feuil1").Range(????)
        If cell.Offset(, 3).Value = "" Then
            cell.Select
            Selection.EntireRow.Delete
        End If
    Next
    J'ai essayé différentes choses avec End(xlDown/xlUp) mais au final il me prend toujours mon range de haut en bas et non de bas en haut.

    Y'a t'il un équivalent du "step -1" du for pour un for each ?

    Merci d'avance

  2. #2
    Membre très actif Avatar de gourmand
    Homme Profil pro
    dessinateur projeteur mécanique
    Inscrit en
    Avril 2011
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : dessinateur projeteur mécanique

    Informations forums :
    Inscription : Avril 2011
    Messages : 153
    Par défaut
    je dit surement une connerie, mais a tu essayer d'inversé l'intérieur du range?

    range("A1:A10") => range("A10:A1")

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 12
    Par défaut
    J'avais essayé oui mais c'est pris en compte de la même façon, donc de haut en bas

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 12
    Par défaut
    Merci mercatog !
    J'ai utilisé la première méthode que tu donnes et ça fait exactement ce qu'il me fallait !

    P.S: Je me permet, j'ai posté un autre message, sur la recherche d'élément dépendant de deux champs dans un tcd, tu n'aurais pas une idée please ?
    http://www.developpez.net/forums/d10...sieurs-champs/
    Je n'ai pas eu de réponse et j'ai épuisé toutes mes idées depuis longtemps...
    Merci d'avance

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    J'ai utilisé la première méthode que tu donnes et ça fait exactement ce qu'il me fallait
    pourtant le 2ème code est le plus rapide. mais bon.

    Je n'ai pas eu de réponse et j'ai épuisé toutes mes idées depuis longtemps...
    peut être ta formulation n'est pas claire.

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Pour ta question de boucle For each ne permet pas cela.
    Essaie ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test2()
    Dim LastLig As Long, i As Long
     
    With Worksheets("Feuil1")
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
     
        For i = LastLig To 5 Step -1
            If .Range("D" & i).Value = "" Then .Rows(i).Delete
        Next i
    End With
    End Sub
    Ou autrement et sans boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test3()
    Dim LastLig As Long
     
    With Worksheets("Feuil1")
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        On Error Resume Next
        .Range("D5:D" & LastLig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    End With
    End Sub

    @ Gourmand
    Essaies ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
     
    With Worksheets("Feuil1")
        For Each c In Range("A20:A5")
           Debug.Print c.Address
        Next c
    End With
    End Sub
    Ta proposition n'est pas valable.

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

Discussions similaires

  1. [FLASH 8] Texte dynamique à longueur variable
    Par julien.63 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 3
    Dernier message: 15/01/2007, 20h54
  2. accèder une $variable en bas de page !
    Par Dsphinx dans le forum Langage
    Réponses: 11
    Dernier message: 24/11/2006, 10h23
  3. [champ TEXT]longueure variable ou pre-definie?
    Par hansaplast dans le forum Administration
    Réponses: 2
    Dernier message: 08/08/2006, 17h04
  4. mediumtext, longueur variable ?
    Par bibile dans le forum Requêtes
    Réponses: 7
    Dernier message: 27/07/2006, 11h02
  5. [VBA-E] Parcourir un range ligne par ligne
    Par boosty dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 19/04/2006, 13h44

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