VBA: Application formule sur les cellules non vide

Bonjour,

Je cherche à remplacer

For Each c In [Aj9:Aj2000]
c = c.Formula

Par
For Each c In [Aj9:Aj2000] non vide
c = c.Formula

Pour éviter des calculs trop long le c.formula ne doit s'appliquer uniquement sur les cellules non vide de la plage.Quelqu'un a t'il une solution ?
Cordialement

4 réponses

  1. Contributeur
    Bonjour,

    For Each c In [Aj9:Aj2000].SpecialCells(xlCellTypeFormulas)


    Il faut ajouter un test si tu peux n'avoir aucune formule dans la plage :
        Dim pl As Range
        Set pl = [Aj9:Aj2000].SpecialCells(xlCellTypeFormulas)
        If Not pl Is Nothing Then
            For Each c In pl
                '...
            Next c
        End If

    eric
    0
    1. Je n'ai pas bien compris. Je remplace
      For Each c In [Aj9:Aj2000]
      c = c.Formula

      par

      Dim pl As Range
      Set pl = [Aj9:Aj2000].SpecialCells(xlCellTypeFormulas)
      If Not pl Is Nothing Then
      For Each c In pl
      '...
      Next c
      End If

      ?
      0
      1. Contributeur
        Ben non.
        Tu remplaces '... par le code que tu veux appliquer à chaque cellule :
        c = c.Formula
        si tu n'as que ça à faire
        eric
        0
      2. Excel me met erreur 1004: pas de cellules correspondantes

        Sub Validation()
        Dim C As Range
        Dim pl As Range
        Set pl = [Aj9:Aj2000].SpecialCells(xlCellTypeFormulas)
        If Not pl Is Nothing Then
        For Each C In pl
        C = C.Formula
        Next C
        End If
        End Sub
        0
    2. C'est la macro complète, j'aurais peut être du te la donner dès le début.

      Sub Validation()
      Dim c As Range

      Application.Calculation = xlManual
      Application.ScreenUpdating = False
      For Each c In [Aj9:Aj2000]
      c = c.Formula
      Next
      Application.Calculation = xlAutomatic
      End Sub
      0
      1. Bonjour

        La proposition d'eric (salut à toi) fonctionne bien
        Peut être n'as tu pas de formule dans ta colonne
        Par contre
        c = c.Formula
        me laisse perplexe :-()
        https://mon-partage.fr/f/qqOXQ2Rr/

        Cdlmnt
        0
        1. Bonjour,
          Il n'y a aucune formule dans la colonne AJ. Le mieux c'est que je donne le fichier complet
          https://www.cjoint.com/c/IJopMDzi4rL
          La macro simule une validation de la cellule qui déclencle une autre macro qui créer le planning avec les codes couleurs. C'est la macro Validation.
          Même si cela fonctionne, cela prend trop de temps.
          0
        2. Contributeur
          Il n'y a aucune formule dans la colonne AJ
          il faut être un peu curieux si tu veux progresser.
          Lorsque tu ne connais pas une instruction fait F1 dessus pour lire son aide.
          L'aide sur SpecialCells t'apprend que tu as d'autre valeurs que xlCellTypeFormulas pour XlCellType .
          Par exemple :
          xlCellTypeConstants. Cellules contenant des constantes

          Si c'est un problème de lenteur, je vois pas en quoi retraiter à nouveau toutes les valeurs en AJ, même celles n'en ayant pas besoin, rendra l'ensemble plus rapide (?)

          Et quand je vois On Error Resume Next sans raison en début d'une procédure, je me dis que j'ai affaire à qq'un qui met la poussière sous le tapis et ne cherche pas à corriger au fur et à mesure les erreurs.
          Je préfère me retirer...
          eric
          0
        3. Je me disais que tester si la cellule était vide ou pas était bcp plus rapide que d'appliquer la formule.
          0