[VBA] Compter le nombre de cellules égales à une valeur

Citronflexe

XLDnaute Junior
Bonjour le forum,

J'ai besoin de compter dans un classeur ouvert par une macro, le nombre de cellules égales à "N/A" dans une plage donnée.

J'ai fait un bout du code ..

VB:
Private Sub CommandButton2_Click()
Dim count, i As Integer
Dim cell As Range

On Error Resume Next

For i = 2 To 5
    numLot = Cells(i, 1).Value
    Call Module1.OuvrirFichier("D:\Dossier de lot\Compile\Lot " & numLot & " Compile.xls")
   
    Workbooks("Lot " & numLot & " Compile.xls").Activate
   
    count = 0
   
    For Each cell In Worksheets("DL4").Range("B63:B82")
        If Range(cell).Value = "N/A" Then
            count = count + 1
        End If
    Next
   
    MsgBox (count)
      
Next

MsgBox ("Tous les classeurs ont été ouverts")

End Sub


Avec OuvrirFichier(Monfichier as String) qui est juste la macro qui ouvre le classeur en question, à la bonne feuille, enfin vous verrez ça dans les fichiers joints


Le compteur me renvoie toujours 20, alors que les cellules concernées ne contiennent objectivement pas toutes "N/A"... Je ne comprend pas ce qui ne va pas.


Je vous transmet le classeur concerné ainsi que deux classeurs factices avec les cellules à analyser..

Merci de votre aide ! :)


PS : Tant qu'on y est, lorsque j'essaie d'effectuer un mode pas à pas pour voir où ça plante, après avoir ouvert le fichier, le reste du code file tout seul sans prendre en compte le pas à pas... pourquoi? o_O
 

Pièces jointes

  • XLD2.xlsm
    219.5 KB · Affichages: 21
  • Lot 17001 Compile.xls
    55.5 KB · Affichages: 24
  • Lot 17002 Compile.xls
    56.5 KB · Affichages: 22

M12

XLDnaute Accro
Bonjour,
A tester
Code:
Private Sub CommandButton2_Click()
Dim count, i As Integer
Dim cell As Range
On Error Resume Next
For i = 2 To 5
    numLot = Cells(i, 1).Value
    Call Module1.OuvrirFichier("D:\Dossier de lot\Compile\Lot " & numLot & " Compile.xls")
    Workbooks("Lot " & numLot & " Compile.xls").Activate
    count = 0
    For Each cell In Worksheets("DL4").Range("B63:B82")
        If cell.Value = "N/A" Then
            count = count + 1
        End If
    Next
    MsgBox (count)
Next
MsgBox ("Tous les classeurs ont été ouverts")
End Sub
 

Citronflexe

XLDnaute Junior
Désolé d'abuser de votre temps,

Y'a-t-il un moyen de passer au i suivant si le classeur nommé de la forme "Lot " & numLot & " Compile.xls" n'existe pas dans le répertoire ?

Actuellement à chaque fois qu'un des classeurs n'existe pas, cela renvoie un message d'erreur à cliquer manuellement, il doit y en avoir un bon millier dans ce cas, cela va vite devenir gênant...

Le code actuel :
VB:
Private Sub CommandButton2_Click()
Dim count, i As Integer
Dim cell As Range
Dim Wbk As Workbook

On Error Resume Next

For i = 2 To 10
    numLot = Cells(i, 1).Value
   
    Set Wbk = Workbooks.Open("D:\Dossier de lot\Compile\Lot " & numLot & " Compile.xls")
    Workbooks("Lot " & numLot & " Compile.xls").Activate
   
    count = 0
   
    For Each cell In Worksheets("DL4").Range("B63:B82")
        If cell = "N/A" Then
            count = count + 1
        End If
    Next
   
    Workbooks("Lot " & numLot & " Compile.xls").Close
   
    Range("I" & i) = 20 - count
       
Next

MsgBox ("Tous les classeurs ont été ouverts")


End Sub


Merci d'avance !
 

Discussions similaires

Réponses
21
Affichages
267