EXCEL garder uniquement les cellules utilisés

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. 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
    1. 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. 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
    2. 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