vgendron
XLDnaute Barbatruc
Bonjour à tous
voici une colle qui se pose à moi.. et donc à vous
Dans le fichier joint j'ai une feuille "Saisie Sécurité" que j'ai pré-saisie pour l'exemple
la zone qui m'interrese est le tableau en zone A2428
vous voyez qu'il y a UN seul bonhomme avec
son TYPE en A24
son NOM dans les cellules fusionnées B24:C24
et son STATUT en D24
la macro ci dessous compte de deux manières le nombre de bonhommes
J'ai allégé la macro initiale pour ne garder que ce qui pose problème.
donc. ici.. vous voyez que Comptage1 et Comptage2 donnent bien 1 bonhomme
maintenant.. si vous enregistrez la feuille avec le bouton "Enregistrer feuille"
cela créer un nouveau fichier qui ne contient QUE la feuille "Saisie Sécurité", les formules des colonnes D H L et P ont été supprimées (copier collage spécial valeur)
et maintenant, relancer la macro PbComptage sur CE nouveau fichier..
Comptage1 me donne toujours le bon résultat: 1
mais Comptage2 considère que les cellules qui contenaient une formule en D H L et P; ne sont finalement pas vides... d'ou un 22/3=7.6666
d'ailleurs.. si vous sélectionnez manuellement la zone A2428, dans la barre d'état d'Excel, en bas.. on voit effectivement qu'excel trouve 22: formule ou pas formule...
quelqu'un a une idée du pourquoi comment?
à l'origine, je voulais utiliser la méthode de comptage 2: beaucoup plus rapide puisqu'une seule ligne..
voici une colle qui se pose à moi.. et donc à vous
Dans le fichier joint j'ai une feuille "Saisie Sécurité" que j'ai pré-saisie pour l'exemple
la zone qui m'interrese est le tableau en zone A2428
vous voyez qu'il y a UN seul bonhomme avec
son TYPE en A24
son NOM dans les cellules fusionnées B24:C24
et son STATUT en D24
la macro ci dessous compte de deux manières le nombre de bonhommes
J'ai allégé la macro initiale pour ne garder que ce qui pose problème.
VB:
Sub pbcomptage()
Set PalSécu = Range("A24").Resize(5, 16) 'selection des groupes de sécu
'PalSécu.Select
On Error Resume Next 'permet de continuer si NbPalSécu est vide
ManqueInfo = False
Comptage1 = 0
'attention. suppose que le tablo PalSécu soit toujours en A24:P28 !!
For i = 1 To 13 Step 4
For j = 24 To 28 Step 1
If Cells(j, i) <> "" Then
If Cells(j, i + 1) = "" Or Cells(j, i + 3) = "" Then
ManqueInfo = True
Else
Comptage1 = Comptage1 + 1
End If
End If
Next j
Next i
Comptage2 = PalSécu.SpecialCells(xlTextValues).Count / 3
'la ligne précédente fonctionne sur le fichier source qui contient les formules pour mettre S en colonnes D - H - L et P
'ne FONCTIONNE PLUS sur un fichier exporté. qui ne contient PLUS les formules
'mais le .count considère pourtant que les colonnes D H L et P sont non vides !! ?? !!!
End Sub
donc. ici.. vous voyez que Comptage1 et Comptage2 donnent bien 1 bonhomme
maintenant.. si vous enregistrez la feuille avec le bouton "Enregistrer feuille"
cela créer un nouveau fichier qui ne contient QUE la feuille "Saisie Sécurité", les formules des colonnes D H L et P ont été supprimées (copier collage spécial valeur)
et maintenant, relancer la macro PbComptage sur CE nouveau fichier..
Comptage1 me donne toujours le bon résultat: 1
mais Comptage2 considère que les cellules qui contenaient une formule en D H L et P; ne sont finalement pas vides... d'ou un 22/3=7.6666
d'ailleurs.. si vous sélectionnez manuellement la zone A2428, dans la barre d'état d'Excel, en bas.. on voit effectivement qu'excel trouve 22: formule ou pas formule...
quelqu'un a une idée du pourquoi comment?
à l'origine, je voulais utiliser la méthode de comptage 2: beaucoup plus rapide puisqu'une seule ligne..