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 :

Par Macro, épurer une feuille [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Points : 153
    Points
    153
    Par défaut Par Macro, épurer une feuille
    Bosoir à tous,

    Je m'explique :
    - Je copie une feuille dans une autre
    - Dans la nouvelle feuille, j'efface des lignes et des colonnes

    La dernière cellule remplie est A:97
    Mais si je fais un control + fin, la cellule Z:270 est sélectionnée.

    Comment faire pour épurer la feuille pour
    que control + fin pointe sur A:97

    J'avais trouvé un code, mais je ne le retrouve plus !

  2. #2
    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
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Address

    voir ftp://ftp2.developpez.be/developps/vb/VB-excel2.pdf PAGE 32

    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 !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 388
    Points : 437
    Points
    437
    Par défaut
    Bonsoir,

    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Réinit()
        Range(Cells.SpecialCells(xlCellTypeLastCell).EntireRow, Cells.Find("*", , , , xlByRows, xlPrevious).EntireRow).Offset(1, 0).Delete
        Range(Cells.SpecialCells(xlCellTypeLastCell).EntireColumn, Cells.Find("*", , , , xlByColumns, xlPrevious).EntireColumn).Offset(0, 1).Delete
        ActiveWorkbook.Save
    End Sub
    De mémoire il me semble que UsedRange n'est pas suffisant

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Points : 153
    Points
    153
    Par défaut
    Bonsoir Ormonth,
    Oui, cela affiche bien le N° de la dernière cellule remplie

    Bonsoir JPierreM,
    Ok, cela fonctionne
    Mais, je trouve le traitement un très long

    Pourais-t'on se servir du code d'Ormonth
    pour démarrer l'épuration ?

  5. #5
    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
    Citation Envoyé par JPierreM
    De mémoire il me semble que UsedRange n'est pas suffisant
    J'ai testé personnellement et c'est nickel, comme tout ce que comporte le tuto de Bidou d'ailleurs

    Citation Envoyé par malabarbe
    Bonsoir Ormonth,
    Oui, cela affiche bien le N° de la dernière cellule remplie
    l'important est que si tu fais un CTRL + Fin à suivre tu arrives bien sur la dernière remplie désormais

    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 !

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Points : 153
    Points
    153
    Par défaut
    Bonsoir Ormonth,

    Autant pour moi, cela fonctionne.

    Peut-on appliquer le code sans passer par le Msgbox ?

  7. #7
    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
    Le Msgbox n'a rien à voir dans l'affaire, l'important est de valider l'usage de la propriété UsedRange pour renvoyer l'objet Range qu'on veut obtenir et qui représente la plage "réelle" voulue.

    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 !

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Points : 153
    Points
    153
    Par défaut
    Bonsoir Ormonth,

    Oui, j'ai bien compris, Mais quel serait le code
    a appliquer pour avoir le mème résultat
    sans passer par le Msgbox ?

  9. #9
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    La dernière cellule remplie est A:97
    Mais si je fais un control + fin, la cellule Z:270 est sélectionnée.

    Comment faire pour épurer la feuille pour que control + fin pointe sur A:97
    après suppression, tu sauvegarde ton fichier
    le Z270 ne sera plus "mémorisé"
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Points : 153
    Points
    153
    Par défaut
    Bonsoir mercatog,

    Non, cela ne fonctionne pas...

  11. #11
    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
    n'importe quoi qui fasse appel à UsedRange de façon explicite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    activesheet.UsedRange.select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell) = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell)
    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 !

  12. #12
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Pourtant, j'ai testé
    j'ai mis un tas de données
    ctrl fin -> Z270 est sélectionnée (la dernière cellule en bas à droite)
    je supprime des données, la dernière cellule en bas à droite est la A97
    ctrl fin -> Z270 est encore sélectionnée (qui n'est plus la dernière cellule en bas à droite)
    je sauvegarde le fichier
    ctrl fin -> A97 est sélectionnée
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Points : 153
    Points
    153
    Par défaut
    Bonsoir Ormonth,

    J'ai testé le premier code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ActiveSheet.UsedRange.Select
    Range("A1").Select
    Non seulement cela tourne, mais c'est instantanné !

    Ouf, un grand merci pour l'acharnement...

    Merci aussi a :
    - mercatog
    - JPierreM

    Pour m'avoir aiguillé vers des solutions

    Bonne soirée à tous
    Et au plaisir de vous retrouver sur le Forum.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/09/2013, 09h33
  2. [XL-2007] Lancer une macro par dévérouillage d'une feuille
    Par Exosporium dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/10/2012, 19h49
  3. [XL-2003] Macro ANNULER une suppression (par macro) dans une feuille
    Par Airone1CF03 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/03/2010, 10h26
  4. suppression d'une macro d'une feuille excel protegée par mot de passe
    Par adilissimo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/06/2007, 20h25
  5. Réponses: 6
    Dernier message: 15/05/2006, 17h04

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