Condition de répétition

Bonjour à tous,

Je vous contacte aujourd'hui dans le but de trouver une solution rapide à mon problème.

Mon problème :

Actuellement, j'ai créée une macro en VBA pour qu'elle comptabilise un nombre de cellule donné.

Le soucis est qu'elle ne se remplis pas automatiquement.

En voici un exemple,

7document-proto.zip (15.33 Ko)

Sub Macro1()
'
' Macro1 Macro
'

'
    Sheets("DOC_TEST (Default) Cells").Range("G:H").AdvancedFilter Action:= _
        xlFilterCopy, CriteriaRange:=Range("A3:B4"), CopyToRange:=Range("A8:B8"), _
        Unique:=True
    Range("C8").Select
    ActiveCell.FormulaR1C1 = "Nombre"
    Range("C9").Select
    Selection.FormulaArray = _
        "=SUM(IF('DOC_TEST (Default) Cells'!C[5]=Feuil1!RC[-1],1,0))"
    Range("C9").Select
    Range("C10").Select
    ActiveCell.FormulaR1C1 = _
        "=SUM(IF('DOC_TEST (Default) Cells'!C[5]=Feuil1!RC[-1],1,0))"
    Range("C10").Select
    Selection.FormulaArray = _
        "=SUM(IF('DOC_TEST (Default) Cells'!C[5]=Feuil1!RC[-1],1,0))"
    Range("C11").Select
    Selection.FormulaArray = _
        "=SUM(IF('DOC_TEST (Default) Cells'!C[5]=Feuil1!RC[-1],1,0))"
End Sub

Ma question :

Comment puis-je continuer ma répétition à la condition que la colonne C se remplit automatiquement ?

Cordialement et bonne journée

Bonjour,

Je mets pour le moment à coté de ta macro. Dis-nous clairement ce que tu veux obtenir comme résultat. Si possible avec un exemple.

Bonjour,

Essaie comme cela

Sub Macro1()
Dim PlageSource As Range
Dim DerLig As Long, Ligne As Long

    Set PlageSource = Sheets("DOC_TEST (Default) Cells").Range("G:H")
    PlageSource.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("A3:B4"), _
    CopyToRange:=Range("A8:B8"), Unique:=True

    Range("C8") = "Nombre"
    DerLig = Range("A" & Rows.Count).End(xlUp).Row
    For Ligne = 9 To DerLig
        Cells(Ligne, 3) = Application.CountIf(PlageSource, Cells(Ligne, 2))
    Next Ligne

End Sub

A+

frangy a écrit :

Bonjour,

Essaie comme cela

Sub Macro1()
Dim PlageSource As Range
Dim DerLig As Long, Ligne As Long

    Set PlageSource = Sheets("DOC_TEST (Default) Cells").Range("G:H")
    PlageSource.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("A3:B4"), _
    CopyToRange:=Range("A8:B8"), Unique:=True

    Range("C8") = "Nombre"
    DerLig = Range("A" & Rows.Count).End(xlUp).Row
    For Ligne = 9 To DerLig
        Cells(Ligne, 3) = Application.CountIf(PlageSource, Cells(Ligne, 2))
    Next Ligne

End Sub

A+

MAGGGGGGGNNNIIIIIIIIFFFFFAAAAIIIIIIIIQQQQQQUUUUEEEEE

Merci beaucoup et très bon week end

Excusez-moi mais j'ai encore un petit soucis, ...

Sub Macro1()
Dim PlageSource As Range
Dim DerLig As Long, Ligne As Long

    Set PlageSource = Sheets("DOC_TEST (Default) Cells").Range("G:H")
    PlageSource.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("A3:B4"), _
    CopyToRange:=Range("A8:B8"), Unique:=True

    Range("C8") = "Nombre"
    DerLig = Range("A" & Rows.Count).End(xlUp).Row
    For Ligne = 9 To DerLig
        Cells(Ligne, 3) = Application.CountIf(PlageSource, Cells(Ligne, 2))
    Next Ligne

End Sub

Il s'agit de la 4 ième ligne de code

Set PlageSource = Sheets("DOC_TEST (Default) Cells").Range("G:H")

Ma première feuille peut s'appeler différemment que DOC_TEST ...

Comment puis-je peaufiner mon code VBA pour qu'il soit adaptable à tout mes documents exportés excel ?

Cordialement.

Dans tous les cas, il faut que tu puisses désigner la feuille qui contient les données.

Si tu ne peux pas lui donner un nom standard, tu peux utiliser son numéro d'ordre :

Set PlageSource = Sheets(1).Range("G:H")

(En supposant qu'il s'agit toujours de la feuille 1).

A+

Haaaa super merci beaucoup je vais tous de suite essayer cela

Rechercher des sujets similaires à "condition repetition"