Comparer 2 fichiers

MJ13

XLDnaute Barbatruc
Bonjour à tous

J'ai cette macro en VBA qui permet de compter la somme des valeurs d'une feuille. Mais si j'ai des formules avec des erreurs, cela bug.

Comment puis-je compter la somme des valeurs sans les erreurs :confused:

Merci d'avance :).

Code:
Set myRange = Workbooks(NW1).Worksheets(i).Range("A1:IU65536")
T = Application.WorksheetFunction.Sum(myRange)

NW1 est le nom du classeur et i est le numéro de la feuille du classeur.
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Compter la somme totale d'une feuille sans les erreurs

Bonjour Michel:)

essaye peut être comme suit, non testé...
Code:
Set myRange = Workbooks(NW1).Worksheets(i).Range("A1:IU65536").SpecialCells(xlCellTypeConstants, xlNumbers)
t = Application.WorksheetFunction.Sum(myRange)

bonne journée
@+
 

pierrejean

XLDnaute Barbatruc
Re : Compter la somme totale d'une feuille sans les erreurs

Bonjour Mj13

Atester:

Code:
Set myRange = Workbooks(NW1).Worksheets(i).Range("A1:IU65536")
for each cel in Myrange
 On error resume next
   T=T+cel.value
 On error Goto 0
next

Edit: Salut Pierrot
 

Victor21

XLDnaute Barbatruc
Re : Compter la somme totale d'une feuille sans les erreurs

Bonjour, MJ13, Pierrot93, pierrejean.

Sur Excel 2007, la fonction COMPTE (Non testé, je suis sous Excel 3003).
Code:
La fonction COMPTE compte le nombre de cellules contenant des nombres et les nombres compris dans la liste des arguments. Utilisez la fonction COMPTE pour obtenir le nombre d’entrées numériques dans un champ numérique d’une plage ou d’une matrice de nombres.

  • Les arguments qui sont des nombres, des dates ou une représentation textuelle de nombres (par exemple, un nombre compris entre guillemets, comme "1") sont pris en compte.
  • Les valeurs logiques et les représentations textuelles de nombres directement tapées dans la liste des arguments sont prises en compte.
  • Les arguments qui correspondent à des valeurs d’erreur ou à du texte qu’il est impossible de convertir en nombres ne sont pas comptés.
  • Si un argument est une matrice ou une référence, seuls les nombres et les dates de cette matrice ou de cette référence sont comptés. Les cellules vides, les valeurs logiques, le texte ou les valeurs d’erreur contenus dans cette matrice ou référence ne sont pas comptés.
 

JCGL

XLDnaute Barbatruc
Re : Compter la somme totale d'une feuille sans les erreurs

Bonjour à tous,

Je te faisais remarquer que tu écrits que que tu es en XL 3003...

Félicitations pour ton passage en Accro ; je t'ai flashé...

A++
A + à tous
 

MJ13

XLDnaute Barbatruc
Re : Compter la somme totale d'une feuille sans les erreurs

Bonjour Pierrot, Pierre-Jean, Patrick, jean-Calude

Merci pour vos réponses, mais en prenant lecode de Pierrot, cela bug si dans une feuille je n'ai rien (cela peut arriver).

Le code de Pierre jean est trop long si j'ai des gros fichiers.

Pour Patrick, je n'ai pas vu cette fonction Compte (c'est une fonction, du VBA :confused:).

Sachant que mon but ultime est de comparer 2 classeurs avec les noms des onglets, ce qu'il contient (c'est pour cela qu'en comptant la somme des valeurs de chaque feuille, je suis à peu près sur que les 2 feuilles sont identiques).

Pour l'instant j'ai ce code:
Code:
Sub Compare_2_fichiers()
NWC = ThisWorkbook.Name 'Name Workbook Comparaison
'Stop
On Error Resume Next
Cells.Clear
Dim NW1S(1000), NW2S(1000)
FirstLig = 3
For i = 1 To 2
ActiveWindow.ActivateNext
'Affiche toutes les feuilles Classeur1
nc = ActiveWorkbook.Sheets.Count
For N = 1 To nc
Sheets(N).Visible = True
Next
NW1 = ActiveWorkbook.Name
NW1P = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
ActiveWindow.ActivateNext
'Affiche toutes les feuilles Classeur2
nc = ActiveWorkbook.Sheets.Count
For N = 1 To nc
Sheets(N).Visible = True
Next
NW2 = ActiveWorkbook.Name
NW2P = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
ActiveWindow.ActivateNext
If ActiveWorkbook.Name = NWC Then GoTo suite Else MsgBox "Vous devez fermer les fichiers non utiles": End
Next
suite:
'MsgBox "Comparaison " & NW1 & " et " & NW2
Cells(2, 1) = "Comparaison " & NW1 & " et " & NW2
Cells(3, 1) = NW1P: Cells(3, 2) = NW1
Cells(3, 3) = NW2P: Cells(3, 4) = NW2
For i = 1 To Workbooks(NW1).Worksheets.Count
NW1S(i) = Workbooks(NW1).Worksheets(i).Name
Set myRange = Workbooks(NW1).Worksheets(i).Range("A1:IU65536").SpecialCells(xlCellTypeFormulas, xlNumbers)
t = Application.WorksheetFunction.Sum(myRange)
Cells(i + FirstLig, 1) = NW1S(i): Cells(i + FirstLig, 2) = t
Next
For i = 1 To Workbooks(NW2).Worksheets.Count
NW2S(i) = Workbooks(NW2).Worksheets(i).Name
Set myRange = Workbooks(NW2).Worksheets(i).Range("A1:IU65536")
t = Application.WorksheetFunction.Sum(myRange)
Cells(i + FirstLig, 3) = NW2S(i): Cells(i + FirstLig, 4) = t
Next
End Sub


Mais si la feuillee st vide (ou qu'il n'y a que du texte, cela me met la même valeur de taille que la dernière qui était correcte).

Vous me suivez:confused:
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Compter la somme totale d'une feuille sans les erreurs

Re, bonjour tous:)

il faut encapsuler le code ainsi :
Code:
 On error resume next
Set myRange = Workbooks(NW1).Worksheets(i).Range("A1:IU65536").SpecialCells(xlCellTypeFormulas, xlNumbers)
On error Goto 0

et ensuite tester si ton "range" est initialisé :
Code:
If Not myrange Is Nothing Then t = Application.WorksheetFunction.Sum(myrange)

bon après midi
@+
 

MJ13

XLDnaute Barbatruc
Re : Compter la somme totale d'une feuille sans les erreurs

Re

Merci Pierrot, mais la, ça ne focntionne pas (ou j'ai pas les capacités :eek:), je vais partir sur une autre piste.

Je vous tiens au courant (mais peut-être pas aujourdhui) :).
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Compter la somme totale d'une feuille sans les erreurs

Re

Pierrot, je tiens peut-être le bon bout mais je verrai cela lundi (c'est plus compliqué qu'il n'y paraît :eek:).

Lundi, je vous en dirai plus.

Merci et bon Wek-end :).
 

MJ13

XLDnaute Barbatruc
Re : Compter la somme totale d'une feuille sans les erreurs

Re

Sinon,pour tester le fichier, c'est pas très compliqué :eek:.

Tu prends 2 fichiers avec plein de feuilles que tu recopies, Fichier 1 et 2. Dans le second fichier, tu changes quelques valeurs dans 1 ou 2 feuilles.

Puis tu crées un fichier avec la macro de 12H28 (Alt+F11 puis insertion module).

Tu ouvres les 2 fichiers et tu lances la macro en étant sur la feuille qui a la macro (Alt+F8).

Après, tu dois avoir la liste de chaque feuille avec la somme de chaque feuille.

Ah, oui, il faut aussi rajouter sur 1 feuille, queques erreurs de formules (#Div/0).

Bon test :).
 
Dernière édition:

Discussions similaires

Réponses
4
Affichages
483

Statistiques des forums

Discussions
312 413
Messages
2 088 199
Membres
103 758
dernier inscrit
JACQUOT33