Bonjour, j'ai besoin d'afficher le nombre de ligne d'un tableau qui se trouve dans un autre onglet.
Je crée un objet texte et dedans je réalise un count du tableau.
Pour éviter la duplication de code je voulais compter le nombre de ligne en me servant de l'ID du tableau en question mais je ne sais pas comment faire?
Je pensais faire un Count("ID du tableau en question") mais ça fonctionne pas x). Ce serait trop simple.
Merci d'avance pour votre aide.
Cordialement.
Il n'y a qu'une fonction qui permet de connaître le nombre de ligne d'un tableau, c'est NoOfRows() Mais il n'est utilisable que dans des expressions du tableau lui même. Il n'a pas de paramètre.
Le seul moyen que je voie, c'est d'utiliser une macro :
Cette macro va créer est mettre à jour une variable pour chaque objet ==> nbRows_CH21 (l'id de votre tableau)
que vous pourrez utiliser comme vous voulez.
Du coup j'ai testé Count('Toto') et ça me sort 1.... seulement j'aimerais qu'il me dise que dans l'objet toto il y a tant de lignes...
Il n'y a qu'une fonction qui permet de connaître le nombre de ligne d'un tableau, c'est NoOfRows() Mais il n'est utilisable que dans des expressions du tableau lui même. Il n'a pas de paramètre.
Le seul moyen que je voie, c'est d'utiliser une macro :
Cette macro va créer est mettre à jour une variable pour chaque objet ==> nbRows_CH21 (l'id de votre tableau)
que vous pourrez utiliser comme vous voulez.
Merci beaucoup Sébastien, ton explication est très clair et ça fonctionne nickel.
J'ai un petit soucis.
Si je défini plusieurs variables, seulement la dernière sera à jours.
C'est à a dire mon dernier "Définir la variable".
Bonjour,
J'ai tester avec 2 appels successifs et effectivement seul le dernier est mis à jour.
Visiblement, l'appel de la macro est asynchrone et le 2ème setting de la variable se fait alors que la macro n'a pas encore commencé.
J'ai modifié la macro pour que l'on ne l'appelle plus qu'une seul fois.
La variable SetNoOfRows_Id va maintenant contenir la liste des Id des objets séparés par une virgule : CH21, TB08
Voici le code de la nouvelle macro :
Sub SetNoOfRows()
'Récupère le paramètre
set p1 = ActiveDocument.Variables("SetNoOfRows_Id")
Ids = Split(p1.getContent.String, ",")
for each Id in Ids
'Crée la variable de retour
ActiveDocument.CreateVariable "nbRows_" & trim(Id)
set v = ActiveDocument.Variables("nbRows_" & trim(Id))
'Récupère le nombre de ligne de l'objet désiré
set obj = ActiveDocument.GetSheetObject(trim(Id))
'Retourne la valeur
v.SetContent obj.GetNoOfRows,true
next
End Sub
Bonjour Sébastien merci pour cette réponse.
Dsl pour le temps de réponse, j'étais très occupé.
J'ai regardé ton code et il fonctionne bien merci beaucoup.
Par contre le v.SetContent obj.GetNoOfRows,true ne fonctionne pas lorsque l'on a affaire à un tableau dynamique. Ce que je peux comprendre.
Y aurait il un moyen de compter le nombre total de ligne?
Merci d'avance pour ton aide.
Pour une pivot table, on peut utiliser la fonction obj.GetRowCount qui retourner le nombre de ligne total (entête, total, total intermédiaire) A noter que cette fonction peut également être utilisée sur les autre type de table.
Voici la macro légèrement modifiée:
Sub SetNoOfRows()
'Récupère le paramètre
set p1 = ActiveDocument.Variables("SetNoOfRows_Id")
Ids = Split(p1.getContent.String, ",")
for each Id in Ids
'Crée la variable de retour
ActiveDocument.CreateVariable "nbRows_" & trim(Id)
set v = ActiveDocument.Variables("nbRows_" & trim(Id))
'Récupère le nombre de ligne de l'objet désiré
set obj = ActiveDocument.GetSheetObject(trim(Id))
Select Case obj.GetObjectType
Case 4 'TableBox
v.SetContent obj.GetNoOfRows, true
Case 10 'PivotTable
v.SetContent obj.GetRowCount, true
Case 11 'StraightTable
v.SetContent obj.GetNoOfRows, true
Case Else
v.SetContent "Objet non géré", true
End select
next
End Sub