transcrire en code vba

  • Initiateur de la discussion Initiateur de la discussion paskikic
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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:
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
472
  • Question Question
Microsoft 365 îPb code VBA
Réponses
1
Affichages
612
Réponses
10
Affichages
830
Réponses
13
Affichages
1 K
  • Question Question
Microsoft 365 macro vba sumifs
Réponses
5
Affichages
629
Réponses
1
Affichages
1 K
Retour