Afficher: Nbre de lignes utilisée

  • Initiateur de la discussion Alix
  • Date de début
A

Alix

Guest
Bonjour,

J'essaye sans succès de faire une macro pour afficher dans un UserForm :

- le nom de toute les feuilles, sauf la feuille 'A', avec en vis à vis le nombre de courriers (nbre de lignes utilisées -1), la première lignes, c'est les titres.


- le nombre total des courriers du classeur (total de toutes les feuilles, sauf la feuille 'A'.


Merci beaucoup pour votre aide.

Cordialement

Alix
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Voici une méthode pour retrouver ce que tu veux après tout dépend comment tu veux afficher les différentes listes (listbox combobox label ...)

dim ws as worksheet
MoNom as string
MonNbre as Integer
MaListe as string
MonTotalcourrier as Integer

for each ws in worksheets
if ws.name<>'A' then
MonNom=ws.name
MonNbre=ws.range('A65536').end(xlup).row-1
Maliste=Maliste & MonNom & ' ' & MonNbre & vbcrlf
end if
next
MonTotalcourrier=sheets.count -1

Bon courage
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Alix, Pascal, bonjour le forum,

Pascal a déjà tout dit mais j'ose à peine réctifier le cher maître en proposant une tout petite modif basée sur son exemple :


Dim ws As Worksheet
Dim MoNom As String
Dim MonNbre As Integer
Dim MaListe As String
Dim Tot As Integer
Dim MonTotalcourrier As String

For Each ws In Worksheets
If ws.Name <> 'A' Then
MonNom = ws.Name
MonNbre = ws.Range('A65536').End(xlUp).Row - 1
MaListe = MaListe & MonNom & ' : ' & MonNbre & vbCrLf
Tot = Tot + MonNbre
End If
Next
MonTotalcourrier = Sheets.Count - 1 & ' Feuilles : ' & Tot & ' Courriers'
MsgBox MaListe & vbCrLf & MonTotalcourrier
 
A

Alix

Guest
Merci beaucoup,

c'est génial !! :))



Que faudrait t'il ajouter si je veux, à la suite de cette macro :

- créer une feuille dans le classeur au nom de 'Rapport'

- coller dans cette feuille les infos données dans l'UserForm :

1 colonne pour le nom des feuilles,
avec dans la colonne d'à coté le nbre de courriers



Cordialement

Alix
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le Fil, le forum,

Voici la macro modifiée pour rajouter un onglet Rapport en fin de classeur et remplir les colonnes A et B par les noms des onglets et les quantités de courrier :


Dim MonNbre As Integer
Dim Tot As Integer
Dim x As Integer
Dim y As Integer

Sheets.Add
ActiveSheet.Move After:=Sheets(Sheets.Count)
ActiveSheet.Name = 'Rapport'
Cells(1, 1).Value = 'Nom'
Cells(1, 2).Value = 'Nombre'
y = 2
For x = 1 To Worksheets.Count - 1
If Sheets(x).Name <> 'A' Then
MonNbre = Sheets(x).Range('A65536').End(xlUp).Row - 1
Sheets('Rapport').Cells(y, 1).Value = Sheets(x).Name
Sheets('Rapport').Cells(y, 2).Value = MonNbre
y = y + 1
Tot = Tot + MonNbre
End If
Next
Sheets('Rapport').Cells(y + 1, 1) = 'Total'
Sheets('Rapport').Cells(y + 1, 2) = Tot
 

PascalXLD

XLDnaute Barbatruc
Modérateur
re

:) ;) :) ;) :) ;)

Robert a déjà tout dit mais j'ose à peine réctifier le cher maître en proposant une tout petite modif basée sur son exemple à cette ligne :

If Sheets(x).Name <> 'A' Then

par

If Sheets(x).Name <> 'A' ANd Sheets(x).Name <> 'Rapport' Then

Sinon la feuille Rapport sera incluse dans la boucle

Bonne journée

Message édité par: Pascal76, à: 17/06/2005 14:51
 
A

Alix

Guest
Merci infiniment Robert,

Ta macro fonctionne très bien,


par contre dans la feuille 'Rapport', :


le total de tous les courriers inclu aussi le nombre de lignes uilisées dans la feuille 'Rapport'.

Comment excure les lignes de la feuille 'Rapport' de ce total ?

Merci d'avance

Cordialement
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le fil, le forum,

Lol Pascal... Alors j'explique... J'avais fait «presque» comme toi au début :

If Sheets(x).Name <> 'A' And Sheets(x).Name <> 'Rapport' Then
sauf que j'avais mis Or au lieu de And et évidemment ça ne marchait pas.
J'ai alors contourné avec -1 dans la boucle :

For x = 1 To Worksheets.Count - 1
Comme j'ai mis l'onglet Rapport a la fin du classeur celui-ci n'est pas pris en compte dans la boucle et je ne comprends pas pourquoi chez vous ça l'est, pois vrai ! Mon Cher Pascal aurais-tu une explication ?
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re

Mea culpa Robert je n'avais pas vu ton -1

Que veux-tu je préfère l'écrire en clair que je ne veux pas la feuille 'Rapport' que ces subtilités de comptage qui amènent parfois des erreurs

Donc ton code doit marcher mais j'avais posté sans avoir vu ce - 1

donc pour ALix tu peux faire en reprenant le code de robert

For x = 1 To Worksheets.Count
If Sheets(x).Name <> 'A' ANd Sheets(x).Name <> 'Rapport' Then

Et cela devrait marcher
 
A

Alix

Guest
Merci beaucoup,


C'est parfait,

En fait, j'avais modifier l'ordre des feuilles, et la feuille 'Rapport' se mettait en 1 ce qui je n'avais pas compris affectait le code de Robert qui en fait marchais très bien avant ma modif.

Merci infiniment pour votre sollicitude

Très bon WE

Alix
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal