Optimisation d'une formule matricielle avec VBA ?

Bonjour le forum,

J'ai un fichier excel qui regroupe plusieurs bases de données pour en extraire les infos pertinentes.

Or, j'ai cette formule sur 55 colonnes * 3000 lignes et le calculs prend plusieurs minutes.

=SIERREUR(SIERREUR(SI(LIGNE(INDEX($C$4:$C$19;EQUIV($F5;$C$4:$C$19;0)-1))-LIGNE(INDEX($C$4:$C$19;EQUIV($F4;$C$4:$C$19;0)+1))>=COLONNE()-13;INDIRECT("d"&LIGNE(INDEX($C$4:$C$19;EQUIV($F4;$C$4:$C$19;0)+COLONNE()-12)));"");INDIRECT("d"&LIGNE(INDEX($C$4:$C$19;EQUIV($F4;$C$4:$C$19;0)+COLONNE()-12))));"")

Le but est de récupérer les infos sous chaque "a" pour réduire la taille en hauteur du document comme montré dans l’exemple.

image

Je ne sais pas utiliser VBA et j'aimerais savoir si passer par une macro optimiserait le calcul.

Merci pour votre attention.

bonsoir,

une proposition via une macro

Sub aargh()
    k = 3 'n° de ligne sur tableau résultat
    With Sheets("feuil3") 'on travaille avec la feuille nommée feuil3, toutes les méthodes ou propriétés commençant par un "." dans le instruction qui suivent jusqu'au prochain with ou end with, appartiennent à feuil3
        dl = .Cells(Rows.Count, 3).End(xlUp).Row 'dernière ligne utilisée en colonne 3 (ou C)
        For i = 4 To dl 'on prend les n° de lignes de 4 à dl
            If .Cells(i, 4) = "a" Then 'si "a" en colonne 4 (ou D)
                k = k + 1 'on incrémente le n° de ligne résultat
                c = 6 'n° de colonne résultat = 6
                .Cells(k, 6) = .Cells(i, 3) ' on met le code de "a"  (trouvé en colonne 3) dans résultat (ligne k, colonne 6)
            Else 'sinon pas "a" en colonne 4
                c = c + 1 'on incrémente le n° de colonne
                .Cells(k, c) = .Cells(i, 4) ' on met le contenu de la colonne 4 dans résultat (ligne k, colonne c)
            End If
        Next i 'ligne suivante
    End With 
End Sub

il faut supprimer les formules ou mettre ton classeur en mode calcul manuel, sinon tu ne verras pas l'amélioration

Bonjour h2so4,

Ton code fonctionne à la perfection !

Seule remarque, j'aurais aimé un commentaire pour comprendre quoi fait quoi ^^

Je vais chercher comment l'adapter à mon fichier. Merci encore.

Cordialement.

bonjour,

commentaires ajoutés

Rechercher des sujets similaires à "optimisation formule matricielle vba"