EXCEL garder uniquement les cellules utilisés

MrQuant Messages postés 56 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour à tous,

J'ai une feuille Excel qui affiche le réultat de plusieurs tests que je fait sur d'autres cellules dans d'autres feuilles (une sorte de tableau de bord). Dans cette feuille je ne souhaite garder que les cellules utilisés c.a.d griser toutes les autres.

Je sais que c'est possible mais je ne suis pas arrivé à le faire!

D'avance merci

3 réponses

  1. MrQuant Messages postés 56 Statut Membre 1
     
    y-a-il une autre façon plus propre que de:
    (1) masquer les lignes et colonnes en extras
    (2) fusionner les cellules non utilisés à l'interieur de mon RANGE et les colorés en gris

    Ca donne exactement ce que je veux mais ce n'est pas pratique !

    Jusqu'à présent je n'ai pas pensé à le faire en passant par VBA mais je crois que c'est le seul moyen de le faire automatiquement.

    Qu'en dites vous ?
    0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    bonjour,
    sans VBA je ne sais pas faire,
    avec VBA

    Public Sub GrisePlage()
    For Each cel In Selection
      If cel.Value = "" Then
        cel.Interior.ColorIndex = 15
      End If
    Next cel
    End Sub


    tu mets ce code dans un module (Alt-F11 pour acceder a l'editeur puis un copier/coller
    verifes qu'excel accepte l'ouverture des macros (sous excel 2003 outils/macros/securité et choisir moyenne)
    toujours avec outils/macro choisir GrisePlage puis options et attribuer un raccourci clavier (par exemple ctrl-g)
    quitter excel
    reouvrir ton fichier et accepter l'ouverture des macros
    selectionner la plage a traiter puis ctrl-g ou Outils/Macros/GrisePlage/executer

    bonne suite

    si une solution sans VBA arrive, elle sera meilleure que la mienne !
    0
    1. MrQuant Messages postés 56 Statut Membre 1
       
      Salut ccm81,
      Merci bien pour ton message...cqfd :)

      En fait j'ai posté mon message car je ne sais pas pourquoi j'ai l'impression que j'ai déjà vu quelque part comment faire exactement la même chose sans passer par du VBA !!!

      S'agissant de ton code je viens de l'essayer et lorsque je fait tourner la procédure elle met long temps avant de s'arreter ...j'ai du a chaque fois arrêter l'execution!

      Est que tu a le même problême ou pas ?
      0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    re

    il doit y avoir une grande plage à traiter
    en desactivant le rafraichissement de l'écran, ça devrait accelerer

    Private Sub GrisePlage() 
    Const plage = "A1:AA2000" 
    Dim cel 
    Application.ScreenUpdating = False 
    For Each cel In Range(plage) 
      If cel.Value = "" Then 
        cel.Interior.ColorIndex = 15 
      End If 
    Next cel 
    Application.ScreenUpdating = True 
    End Sub 


    chez moi, pour cette plage (54 000 cellules) c'est 3 secondes

    si ça te convient, et que tu veux appliquer la macro a une plage selectionnée,
    - tu supprimes la ligne Const =
    - tu remplaces Range(plage) par Selection
    comme dans ma 1° proposition

    RQ1. sans macro, j'ai le pb des cellules qui contiennent une formule et un resultat "", je supposes que toi aussi.
    RQ2. question bête, mais on ne sait jamais, tes cellules "vides" sont elles vides ou sont elles comme dans RQ1

    bonne suite
    0