CompterDeslignesDunTableauVariable

M

Moa

Guest
Re à Toutes et tous

Voilà, depuis plusieurs mois, je m'acharne à poser des questions et trouver une solution, pour changer dans des formules la plage de comptage.

Nous avons tout essayé "Countif", Nbval, nb.si +decaler etc...et sans réel succès.

En effet, il y avait toujours des résultats faux.

Eh bien, ce soir, j'ai trouvé la solution.

Une macro associée à une formule.

Donc, j'importe mon nouveau tableau, avec 3000 lignes alors que le précèdent en avait 1500.

Une macro de comptage, qui va me chercher le nouveau nombre de ligne et le copier en B2.

(Dans mon exemple, j'ai besoin de compter à partir de la ligne 16).


Sub CompteLigneFiltrage()
'
' CompteLigFiltrage Macro
' Macro enregistrée le 14/02/2003 par Moa
'
Sheets("Filtrage").Select

Range("C16").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select

'Selection.End(xlToLeft).Select
ActiveCell.FormulaR1C1 = "=ROW()"

Selection.Copy

ActiveCell.Offset(0, -1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Range("b2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Range("C16").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 0).Select
Selection.ClearContents
Range("A1").Select
'
End Sub

Et maintenant, j'ai modifié mes formules "Nb.si", "NbVal", "Somme", comme suit :

NB.SI(DECALER(A16;0;;):DECALER(A16;0;;B2);1)
NB.SI(DECALER(A16;0;;):DECALER(A16;0;;B2);FAUX)

NBVAL(DECALER(P16;0;;):DECALER(P16;0;;B2))


Etc....

Et voilà, du coup, toutes mes formules se mettent à jour sans interventions.

Une petite chose, la macro fonctionne bien, si il n'y a pas de lignes vides, sinon, il faut partir du bas de la feuille et remonter, jusqu'à trouver la première cellule Non vide.

@ +

Moa
 
J

Jean-Marie

Guest
Bonjour Moa

Je pense que tu as une bonne raison pour utiliser une macro, pour connaître la dernière ligne utilisée d'une colonne.

Cette fonction matricielle, me renvoi le numéro de la dernière ligne utilisée dans la colonne A.

=GRANDE.VALEUR((ESTVIDE(Feuil1!A1:A65536)=FAUX)*(LIGNE(Feuil1!a1:a65536));1)

@+Jean-Marie
 
C

Cathy

Guest
Hi! (prononcer haïe) Moa et le forum


Pour compter le nombre de lignes et de colonnes de la plage sélectionnée
j'utilise

With Selection
nblig = .Rows.Count
nbcol = .Columns.Count
End With

mais ça, tu y as sans doute déjà pensé!

c u soon

Cathy
 
M

Moa

Guest
Merci à vous deux de ce complément d'information.

La formule de Jean-Marie, ne me convient pas dans ce cas, pour plusieurs raisons.

En effet, je dois commencer à compter à partir de la 16è ligne, ensuite, si je mets, ta formule en A2 ou autre, "Référence circulaire".

De plus, je cherche vraiment à éviter les formules allant jusqu'à 65 536.
Mon fichier fait déjà 19 Mo.

Quant à Cathy, ton code me servira certainement dans un autre cas,mais là il s'agit seulement de remettre une cellule à jour en fonction du nouveau tableau importé.

Bonne journée à vous deux et encore Merci

@ +

Moa
 

Discussions similaires

Réponses
2
Affichages
288
Réponses
12
Affichages
461

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 182
dernier inscrit
savio