[VBA-EXCEL2003] incompatibilité de type erreur 13

incompatibilité de type erreur 13 [VBA-EXCEL2003] - VB/VBA/VBS - Programmation

Marsh Posté le 30-11-2005 à 15:33:16    

bonjour,
 
je voudrais additionner les memes cellules de plusieurs feuilles  
LE PROBLEME vient des formules des cellules que faire ?
http://img510.imageshack.us/img510/624/img78873gm.th.jpg

Code :
  1. Private Sub Worksheet_Activate()
  2. Call Total
  3. End Sub
  4. Sub Total()
  5. Dim x
  6. For x = 21 To 37
  7.     Dim i, PrixHT
  8.         PrixHT = 0
  9.         For i = 3 To Worksheets.Count
  10.            PrixHT = PrixHT + Sheets(i).Range("D" & x).Value
  11.         Next i
  12.          Sheets("Decompte" ).Activate  ' Attention ta feuille total doit rester en position 1
  13.          Range("G" & x).Value = PrixHT
  14. Next x
  15. End Sub


 

Reply

Marsh Posté le 30-11-2005 à 15:33:16   

Reply

Marsh Posté le 30-11-2005 à 16:02:24    

Salut sakuraba :)
 
Tu dis que le problème viens des formules dans les cellules, peux tu nous les donner , et également sur quelle ligne exactement il te fait l'erreur 13 ?
 
@+ watashi


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 30-11-2005 à 16:03:10    

ligne 10  
et la formule  
=SI(B21-C21=0;"";B21-C21)

Reply

Marsh Posté le 30-11-2005 à 16:36:32    

Il faudrait recuperer la valeur de la formule et non pas la formule elle meme

Reply

Marsh Posté le 30-11-2005 à 16:40:20    

Mais c'est déjà ce que tu fais en faisant le range.value, tu ne récupère que la valeur.
 
je regardes :)


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 30-11-2005 à 16:40:54    

tu veux mon fichier xls ?

Reply

Marsh Posté le 30-11-2005 à 16:42:34    

en faisant un  
 
Msg = MsgBox(Sheets(i).Range("D21" ).Value)
 
j ai une boite vide donc il recupere bien la valeur "" c est ça qui pose probleme donc il faudrait l exclure

Reply

Marsh Posté le 30-11-2005 à 16:48:45    

moi je vois bien un petit  
 

Code :
  1. Sub Acompte()
  2.     Dim i, PrixHT, x
  3.     PrixHT = 0
  4.     For x = 21 To 37
  5.     For i = 3 To Worksheets.Count
  6.         If Sheets(i).Range("D" & x).Value = "" Then
  7.         Sheets(i).Range("D" & x).Value = 0
  8.         Else
  9.             PrixHT = PrixHT + Sheets(i).Range("D" & x).Value
  10.             End If
  11.     Next i
  12.     Sheets("Decompte" ).Activate  ' Attention ta feuille total doit rester en position 1
  13.     Range("G" & x + 3).Value = PrixHT
  14. Next x
  15. End Sub

Reply

Marsh Posté le 30-11-2005 à 16:52:42    

Bon ben plus rapide que je pensais.
Tu as une fonctionalité dans excel qui te permet d'afficher ou non les 0.
Le plus simple à mon avis est donc que tu enlèves cette formule et que tu utilise cette fonctionalité excel.
 
Tu as le choix :  
masquer tous les 0 du classeur : outil/option/affichage - désactiver la case valeur zéro
ou pour une cellule :format/cellules/nombre
dans personalisé le type c'est  0;-0;;@
mais ça t'impose des nombres au format standard.
 
Dis moi si ça règle ton problème :)
@+
 


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 30-11-2005 à 16:54:50    

j ai modifier et remit le PrixHT =0  
et ça marche correctment

Code :
  1. Sub Acompte()
  2.     Dim i, PrixHT, x
  3.     PrixHT = 0
  4.     For x = 21 To 37
  5.     For i = 3 To Worksheets.Count
  6.         If Sheets(i).Range("D" & x).Value = "" Then
  7.         Sheets(i).Range("D" & x).Value = 0
  8.         Else
  9.             PrixHT = PrixHT + Sheets(i).Range("D" & x).Value
  10.             End If
  11.     Next i
  12.     Sheets("Decompte" ).Activate  ' Attention ta feuille total doit rester en position 1
  13.     Range("F" & x + 3).Value = PrixHT
  14.     PrixHT = 0
  15. Next x
  16. End Sub

Reply

Marsh Posté le 30-11-2005 à 16:54:50   

Reply

Marsh Posté le 30-11-2005 à 16:55:27    

La sollution du test pour voir si la valeur est "" est bonne aussi :) mais je le mettrais dans l'autre sens, si ce n'est pas vide j'additionne sinon je ne fais rien et je repars dans mon next ;)
 
@+
 
Edit : attention ! en utilisant ta macro comme ça tu perds ta formule dans la cellule et tu te retrouves avec un 0 affiché alors qu'à priori tu n'en voulais pas :)


Message édité par watashi le 30-11-2005 à 16:58:35

---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed