transcrire en code vba

paskikic

XLDnaute Occasionnel
bonjour a vs ts,


j ai une petite formule de calcul a transcrire en vba et j ai besoin de vos cerveaux les xlnautes car j ai un peu plus de 75 000 lignes et ca alourdie le fichier.


la voici :

{=SOMME(NB.SI(A1:F1;$L$9:$N$9))=3}

merci a vs
 

ChTi160

XLDnaute Barbatruc
Re : transcrire en code vba

Bonsoir paskikic
Ne peux tu mettre , un fichier avec quelques lignes de ce que tu as et de ce que tu veux (qu'on puisse voir comment faire en Vba)
Merci pour eux
avec l'enregistreur de macro ca donne ceux , mais bon
HTML:
 Selection.FormulaArray = "=SUM(COUNTIF(R[-4]C[-3]:R[-4]C[2],R9C12:R9C14))=3"
Amicalement
Jean Marie
 
Dernière édition:

GIBI

XLDnaute Impliqué
Re : transcrire en code vba

Bonsoir,

en VBA tu peux utiliser les fonctions excel avec Evaluate

Evaluate("=SUM(COUNTIF(A1:F1,$L$9:$N$9))=3"

si tu veux faire cela en bouclant sur des 75000 lignes en VBA : cela sera plus lourd qu'une formule excel même si tu travail en table.

sinon pour aller plus loin un exemple serait bien venu
GIBI
 

GIBI

XLDnaute Impliqué
Re : transcrire en code vba

Bonsoir,

si tu tiens a du VBA, voici une approche

ce code est à mettre dans un "module"

Code:
Sub Cntrl()
    Dim Combinaison
    Dim Plage
    Dim I As Long, J As Long
    Dim N As Long
    Dim L As Long, Lmax As Long
   
' empecher l'affichage et calcul    
    ActiveSheet.EnableCalculation = False
    Application.ScreenUpdating = False


    Combinaison = Range("L9:N9")
    L = 1
    Lmax = [A65000].End(xlUp).Row

    Plage = Range(Cells(1, 1), Cells(Lmax, 6)) 'chargement en table de la plage
   
    For L = 1 To Lmax
        N = 0
        For I = 1 To UBound(Combinaison, 2)
            For J = 1 To 6
                If Combinaison(1, I) = Plage(L, J) Then
                    N = N + 1
                End If
            Next
        Next
        If N = 3 Then     ' Mise à jour de la colonne H
            Cells(L, 8) = True
        Else
            Cells(L, 8) = False
        End If
    Next
    ' réactiver affichage et calcul
    ActiveSheet.EnableCalculation = True
    Application.ScreenUpdating = True


End Sub

amuse toi

Cordialement
 

paskikic

XLDnaute Occasionnel
Re : transcrire en code vba

Slt, a tous

GIBI peux tu m' expliquer ton code car j ai mise en forme page en donc decaler mes colonnes et lignes et donc du fais ca bug a ce niveau

For L = 1 To Lmax
N = 0
For I = 1 To UBound(Combinaison, 2)
For J = 1 To 6
If Combinaison(1, I) = Plage(L, J) Then
N = N + 1
End If
Next
Next

merci
 

Discussions similaires

Réponses
1
Affichages
350

Statistiques des forums

Discussions
312 164
Messages
2 085 877
Membres
103 009
dernier inscrit
dede972