Problème compteur cellule non vides
Bonjour à toute la communauté,
Voilà je planche sur l'utilisation d'une macro de comptage de cellules non vides.
Dans ma page Excel jai deux boutons : Un pour importer des fichiers, l'autre pour rénitialiser ma feuille Excel.
De plus j'ai mis un compteur capable de me donner le nombre de fichiers importés dans ma page Excel, ce dernier est codé de cette façon :
Sub compteur()
Dim i As Integer
i = Columns("c").End(xlDown).Row
nbcel = 0
For Each cel In Range("c2:c" & i)
If cel > "" Then
nbcel = nbcel + 1
End If
Next cel
Range("A11").Value = ("Nombre de véhicules chargés : " & nbcel)
End SubJusque là tout fonctionne parfaitement. Cependant afin d'actualiser mon comptage lors de la rénitialisation, j'ai appelé dans le code du bouton "rénitialiser", mon compteur.
Sub Renitialisation()
With Range("c2:c50")
.Interior.ColorIndex = xlColorIndexNone
.Borders.LineStyle = xlLineStyleNone
.Delete
End With
Call ImportVehicule.compteur
End SubEt c'est là que les problèmes commencent !
En effet, quand je rénitialise, VBA m'affiche une erreur : "Dépassement de capacité" et il me surligne la ligne dans mon sub "compteur" :
i = Columns("c").End(xlDown).RowJ'ai beau trifouillé la ligne de code selectionnée, je n'arrive à rien ..
Et pourtant lorsque je ré-importe un autre fichier, mon compteur se remet à jour. Je pense qu'il n'apprécie pas le zero
Mais pourquoi ?!
Si quelqu'un peut m'éclairer, toute aide sera la bienvenue
Merci d'avance.
Cdlt,
Vbrod
Bonsoir,
Sans le fichier qui va avec. humm...
Bonjour,
Si tu réinitialises, tu n'as pas besoin de compter ! Donc l'erreur ne devrait pas se produire si tu ne comptes pas, mais si tu comptes quand il n'y a rien, c'est un peu aberrant !
Sinon l'erreur vient du fait que i ne peut accepter une valeur telle que 1048576...
Et sais-tu que tu ne comptes les cellules vides que dans la mesure où il n'y a pas de nombres, les cellules contenant des nombres sont comptabilisées avec les vides dans ton comptage.
Les autres détails sont secondaires.
Cordialement
Bonjour, pour commencer...la macro sub compteur peu s'optimiser (sauf si il y a des éléments que l'on ne voit pas au dela du cadre de la photo) par
sub compteur()
ActiveSheet.[A11] = ("Nombre de véhicules chargés : " & ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row -1 & ")"
end subEt en fin de compte elle permet même (si j'y vois encore clair) de supprimer la macro de reinitialisation
Bonjour à tous et merci pour vos réponses.
Si je recompte lors de ma rénitialisation c'est pour actualiser mon "nombre de véhicules chargés" sans ça mon compteur reste sur sa dernière position et attends un nouvel import avant de se mettre à jour.
Machin, j'ai essayé ta ligne de code, lorsque je charge un véhicule le compteur passe directement à 14
Mon fichier est malheuresement trop important pour que je puisse vous l'envoyer via le forum ..
Cdlt,
Vbrod
___________________________________________________________EDIT_____________________________________________________________
J'ai résolu mon problème !
La solution est en fait toute simple, je sais pas pourquoi je n'y est pas pensé plus tot ^^"
Comme me l'a fait remarqué MFerrand, c'est un peu aberrant de compter lorsqu'il n'y a rien !
J'ai donc mis une condition SI dans mon compteur afin qu'il agisse différement si la première cellule de ma colonne véhicules est vide
Sub compteur()
Dim i As Integer
If IsEmpty(Range("E2")) Then
Range("A10").Value = ("Nombre de véhicules chargés : 0")
Else
i = Columns("e").End(xlDown).Row
nbcel = 0
For Each cel In Range("e2:e" & i)
If cel > "" Then
nbcel = nbcel + 1
End If
Next cel
Range("A10").Value = ("Nombre de véhicules chargés : " & nbcel)
End If
End SubMon compteur se remet bien à jour après l'appui sur mon bouton rénitialisation
Merci à vous !
Cdlt,
Vbrod
Merci de retour d'information. Je persiste à dire que
Sub compteur()
ActiveSheet.[A11] = "Nombre de véhicules chargés : " & ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row - 1
End Subreste néanmoins moins difficile et nébuleux à entretenir.
Salutation