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 :

code VBA aussi rapide que manuellement ? [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut code VBA aussi rapide que manuellement ?
    Bonjour tout le monde

    Je voudrais savoir s'il existe un moyen de réaliser rapidement une action sur toutes les cellules d'une feuille à la fois.

    Par exemple, lorsque par VBA, on note
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 1 To 65536
         For j = 1 To 256
              Cells(i, j) = ""
         Next j
    Next i
    Cela prend un nombre incalculable de secondes, alors qu'il est, manuellement, si rapide de cliquer sur la case en haut à gauche pour tout sélectionner, et d'appuyer sur suppr...


    Pourquoi une telle différence ? Y a-t-il un moyen de faire, par VBA, aussi rapide que manuellement ? (s'il peut le faire comme ça, j'imagine qu'il le peut aussi par code, mais il faudrait qu'il reprenne exactement le même algorithme...)


    Merci d'avance pour votre aide.


    .

  2. #2
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Salut,

    Comme ca

    ++
    Minick

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut
    En fait, c'était juste un exemple.
    Ce que je cherche réellement à faire sur de très nombreuses cellules est un Validation.Delete, pour effacer les listes qui s'y trouvent.
    (mais merci quand même )

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    bonjur, essaye ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim cel as range
    for each cel in Union(range("A1:D8"),range("G10:J14"))
    cel.Validation.Delete
    next cel
    J'utilise union juste pour te montrer la commande tu peut très bien directement mettre Rang(.....)

  5. #5
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Jai repondu a la question initiale...


    Salut krovax,


    Sinon comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells.SpecialCells(xlCellTypeAllValidation).Validation.Delete
    Edit :
    Ou dans la lignee de krovax mais sans boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Union(Range("A1:D8"), Range("G10:J14")).SpecialCells(xlCellTypeAllValidation).Validation.Delete

    ++
    Minick

  6. #6
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut
    C'est infiniment plus rapide, sans comparaison
    merci beaucoup à tous les deux

  7. #7
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut
    Moins important pour moi, mais est-ce que je peux quand même encore vous demander s'il existe des fonctions similaires pour effacer les bordures, enlever le fond coloré, ou la couleur de police, le gras, etc ?

  8. #8
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Salut,

    Si tu veux pour l'ensemble des cellules de la feuille ou une selection manuelle oui

    par exemple comme ceci pour toute la feuille pour enlever le fond :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells.Interior.ColorIndex = xlNone
    Ou pour la selection manuelle pour enlever la couleur de police:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.Font.ColorIndex = 0
    Ou encore si c'est sur tes liste de validations, avant de supprimer les listes de validation, pour les bordures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cells.SpecialCells(xlCellTypeAllValidation).Borders.LineStyle = xlNone
    Cells.SpecialCells(xlCellTypeAllValidation).Validation.Delete
    ++
    Minick

  9. #9
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut
    !


    Tu as mon entière et complète gratitude ... u_u


    .

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

Discussions similaires

  1. Je ne retrouve plus le code VBA que j'ai écrit
    Par meywey dans le forum VBA Access
    Réponses: 1
    Dernier message: 03/08/2010, 15h40
  2. Que feriez-vous pour la diffusion d'un code VBA?
    Par tremens dans le forum Conception
    Réponses: 2
    Dernier message: 21/03/2010, 18h18
  3. Réponses: 1
    Dernier message: 24/09/2007, 09h49
  4. Réponses: 5
    Dernier message: 03/08/2006, 16h13
  5. Apache aussi rapide sous Win que sous Linux ?
    Par beastman007 dans le forum Apache
    Réponses: 1
    Dernier message: 20/10/2005, 15h19

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