OVH Cloud OVH Cloud

Somme colonne non vide

4 réponses
Avatar
Christian
Bonjour à tous et toutes
Donnée: tableau de base = 66 colonnes sur 100lignes
Comment indiqué en VBA, d'effectuer une somme par colonne et uniquement aux
colonnes non vides.
Actuellement, j'ai la somme sur l'entiereté des 66 colonnes.
En vous remerciant d'avance pour toute aide.

Merci
Christian

4 réponses

Avatar
Jacky
Bonsoir,
Une piste peut-être....
C'est supposer que le ligne 1 est une ligne de titre.
sinon changer cette ligne : Application.Sum(Range(Cells(1, c.Column),
Cells(100, c.Column)))

'-------------
Sub jj()
For Each c In Range("a1:bn1").Columns
total = Application.Sum(Range(Cells(2, c.Column), Cells(101, c.Column)))
If total <> 0 Then
MsgBox total
'Ligne ci dessous à valider si la somme doit s'inscrire en ligne 103
'Range(Cells(103, c.Column), Cells(103, c.Column)) = total
End If
Next
End Sub
'----------
Salutations
JJ

"Christian" a écrit dans le message de
news:
Bonjour à tous et toutes
Donnée: tableau de base = 66 colonnes sur 100lignes
Comment indiqué en VBA, d'effectuer une somme par colonne et uniquement
aux

colonnes non vides.
Actuellement, j'ai la somme sur l'entiereté des 66 colonnes.
En vous remerciant d'avance pour toute aide.

Merci
Christian


Avatar
michdenis
Bonjour Christian,

As-tu essayé quelque chose comme ceci :

'-----------------------------
Sub test()

Dim Rg As Range, S As Double

With Feuil1
Set Rg = .Range("A1:BN1")
End With
For Each c In Rg.Columns
If Application.CountA(c.EntireColumn) <> 0 Then
S = S + Application.Sum(c.EntireColumn)
End If
Next
MsgBox S
End Sub
'-----------------------------


Salutations!




"Christian" a écrit dans le message de news:

Bonjour à tous et toutes
Donnée: tableau de base = 66 colonnes sur 100lignes
Comment indiqué en VBA, d'effectuer une somme par colonne et uniquement aux
colonnes non vides.
Actuellement, j'ai la somme sur l'entiereté des 66 colonnes.
En vous remerciant d'avance pour toute aide.

Merci
Christian
Avatar
FxM
Bonjour à tous et toutes
Donnée: tableau de base = 66 colonnes sur 100lignes
Comment indiqué en VBA, d'effectuer une somme par colonne et uniquement aux
colonnes non vides.
Actuellement, j'ai la somme sur l'entiereté des 66 colonnes.
En vous remerciant d'avance pour toute aide.

Merci
Christian



Bonsoir,

Si j'ai bien compris la question (pas sûr ...), tu peux t'inspirer de ce
qui suit. Attention aux coupures de ligne.

@+
FxM

Sub test()
'zone des 66 colonnes et 100 lignes
zone = "B2:BO101" 'à adapter si besoin

'no de la dernière ligne
lig = Range(zone)(1).Row + Range(zone).Rows.Count - 1

'parcourir chaque colonne
For Each col In Range(zone).Columns

On Error Resume Next
'pour vérifier que les colonnes ne contiennent aucune cellule vide
If col.SpecialCells(xlCellTypeBlanks).Count = 0 Then

'si vide, écrire formule somme après une ligne vide !! (c'est le +2)
Cells(lig + 2, col.Column).FormulaLocal = _
"=somme(" & col.Address & ")"

'sinon
Else

'enlever ce que la cellule contient
Cells(lig + 2, col.Column).ClearContents
End If
On Error GoTo 0

'passer à la colonne suivante
Next col
End Sub

Avatar
Christian
Bonjour
Je vous remercie de m'avoir lu et répondu.
J'essaye tout de suite les différentes propositions.
--
Merci encore
Christian



Bonjour à tous et toutes
Donnée: tableau de base = 66 colonnes sur 100lignes
Comment indiqué en VBA, d'effectuer une somme par colonne et uniquement aux
colonnes non vides.
Actuellement, j'ai la somme sur l'entiereté des 66 colonnes.
En vous remerciant d'avance pour toute aide.

Merci
Christian



Bonsoir,

Si j'ai bien compris la question (pas sûr ...), tu peux t'inspirer de ce
qui suit. Attention aux coupures de ligne.

@+
FxM

Sub test()
'zone des 66 colonnes et 100 lignes
zone = "B2:BO101" 'à adapter si besoin

'no de la dernière ligne
lig = Range(zone)(1).Row + Range(zone).Rows.Count - 1

'parcourir chaque colonne
For Each col In Range(zone).Columns

On Error Resume Next
'pour vérifier que les colonnes ne contiennent aucune cellule vide
If col.SpecialCells(xlCellTypeBlanks).Count = 0 Then

'si vide, écrire formule somme après une ligne vide !! (c'est le +2)
Cells(lig + 2, col.Column).FormulaLocal = _
"=somme(" & col.Address & ")"

'sinon
Else

'enlever ce que la cellule contient
Cells(lig + 2, col.Column).ClearContents
End If
On Error GoTo 0

'passer à la colonne suivante
Next col
End Sub