VBA Eviter la prise en compte de cellules vides

Bonjour le forum

la présent procédure en fin additionne des cellules, toutefois elle met des zeros dans des cellules vides ce qui s'avére genant. Comment éviter cela ? voir fichier

l'utilisation de plages multiples est possible mais ce sont alors des suites impressionantes de plages.

Merci de votre Aide

Private Sub Worksheet_Calculate()
'TRANSFERT DE DONNEES SUITE RESULTATS
If Range("$DL$2") = 1 Then
Dim rg As Range, r1 As Range, r2 As Range
Dim p1 As String, p2 As String

Application.ScreenUpdating = False  'ne pas raffraîchir l'affichage pendant la macro (plus rapide)

'Pour le 1er tableau, à répéter pour les x tableaux, changer les plages
Set rg = Feuil1.Range("DW23")    '1re cellule contenant les infos des 30 tableaux

For j = 0 To 7      '8-1 = nombre de tableaux... à adapter
Range("$DN$2").Formula = j
    On Error Resume Next    'nécessaire s'il y a des cellules vides.
    p1 = CStr(rg.Offset(j, 1))  'nom de la plage 1
    p2 = CStr(rg.Offset(j, 5))  'nom de la plage 2
    Set r1 = Feuil1.Range(p1)   'convertir le nom en plage
    Set r2 = Feuil1.Range(p2)   'convertir le nom en plage
  Range("$C$33").Formula = p1
  Range("$D$33").Formula = p2

  Call MAJ_Tablo2(r1, r2)     ' appel de la fonction

    Set r1 = Nothing            'vider la plage
    Set r2 = Nothing            'vider la plage
Next j
Application.ScreenUpdating = True
End If
End Sub
Sub MAJ_Tablo2(ByRef pTab1 As Range, ByVal pTab2 As Range)
'pTab1 est la plage contenant les agences dans la colonne V
'pTab2 est la plage contenant les agences dans la colonne L
Dim c1 As Range, c2 As Range
For Each c1 In pTab1
    For Each c2 In pTab2
        If c2 = c1 Then
            'on additionne les effectifs, les caht, les intérims
            c1.Offset(0, 39) = c1.Offset(0, 39) + c2.Offset(0, 10)
            c1.Offset(0, 40) = c1.Offset(0, 40) + c2.Offset(0, 11)
            c1.Offset(0, 41) = c1.Offset(0, 41) + c2.Offset(0, 12)
        End If
    Next c2
Next c1
End Sub

Bonjour

Beaucoup de méthodes pour masquer les 0

MEFC, Format personalisé, Option

Dans ta macro essayes

Sub MAJ_Tablo2(ByRef pTab1 As Range, ByVal pTab2 As Range)
'pTab1 est la plage contenant les agences dans la colonne V
'pTab2 est la plage contenant les agences dans la colonne L
Dim c1 As Range, c2 As Range
Dim N As Byte

For Each c1 In pTab1

    For Each c2 In pTab2
        If c2 = c1 Then
            'on additionne les effectifs, les caht, les intérims
            For N = 10 To 12
              If c1.Offset(0, N + 29) + c2.Offset(0, N) > 0 Then
                c1.Offset(0, N + 29) = c1.Offset(0, N + 29) + c2.Offset(0, N)
              Else
               c1.Offset(0, N + 29) = ""
              End If
            Next N
'            c1.Offset(0, 39) = c1.Offset(0, 39) + c2.Offset(0, 10)
'            c1.Offset(0, 40) = c1.Offset(0, 40) + c2.Offset(0, 11)
'            c1.Offset(0, 41) = c1.Offset(0, 41) + c2.Offset(0, 12)
        End If
    Next c2
Next c1

End Sub

Forum Re

Cher Banzai tu es un amour

Ca marche impecable, quel talent hum

bisous bisous

Cordialement

Muriel

Rechercher des sujets similaires à "vba eviter prise compte vides"