Macro somme cellule d'une plage souscondition

Résolu/Fermé
nunnu27 Messages postés 20 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 22 août 2010 - 22 août 2010 à 20:44
nunnu27 Messages postés 20 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 22 août 2010 - 22 août 2010 à 22:53
Bonjour a tous,

Je viens soliciter votre aide car après plusieurs heures de recherche (livres, sites, et forums spécialisés), je ne trouve toujours pas la réponse a mon probleme.

Je m'explique:
exemple

J'ai une colonne A.
Je travaille sur les lignes 10 à 60.
La ligne 60 est la somme des cellules du dessus.
Dans les cellules "A10:A59", la valeur est par defaut 0.
Je peux modifier cette valeur(grâce a un double-clic) en "HS".
C-a-d que la valeur de la cellule A12 (par exemple) passe de 0 à HS (ce qui n'est donc pas un nombre ;) ...).

Je but est de pouvoir faire la "somme des cellules" de cette colonne qui ont pour valeur "different de zero".

C'est là que je bloque...:(

Je compte utiliser :
Sub worksheet_change(ByVal target As Range) 

    If Not Intersect(target, Range ("") Is Nothing Then
    End If
End Sub


afin que cette routine soit toujours active.

Que me conseillez-vous (sachant que je touche au VBA depuis 3 jours, donc un pure néophyte :(....)

Merci d'avance pour votre aides et vos commentaires.
n.b:Pour infos j'utilise deja cette routine (somme sans condition car que des 0 ou 1 dans les cellules.

Sub worksheet_change(ByVal target As Range)

    If Not Intersect(target, Range("E10:E59,H10:H59,K10:K59,N10:N59,Q10:Q59,T10:T59,W10:W59,Z10:Z59,AC10:AC59,AF10:AF59,AI10:AI59,AK10:AK59")) Is Nothing Then
    Range("E60").FormulaLocal = "=Somme(E1:E59)"
    Range("H60").FormulaLocal = "=Somme(H1:H59)"
    Range("K60").FormulaLocal = "=Somme(K1:K59)"
    Range("N60").FormulaLocal = "=Somme(N1:N59)"
    Range("Q60").FormulaLocal = "=Somme(Q1:Q59)"
    Range("T60").FormulaLocal = "=Somme(T1:T59)"
    Range("W60").FormulaLocal = "=Somme(W1:W59)"
    Range("Z60").FormulaLocal = "=Somme(Z1:Z59)"
    Range("AC60").FormulaLocal = "=Somme(AC1:AC59)"
    Range("AF60").FormulaLocal = "=Somme(AF1:AF59)"
    Range("AI60").FormulaLocal = "=Somme(AI1:AI59)"
    Range("AK60").FormulaLocal = "=Somme(AK1:AK59)"
    End If
    
End Sub


Merci d'avance

Cordialement

A voir également:

5 réponses

nunnu27 Messages postés 20 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 22 août 2010 1
22 août 2010 à 21:18
Re bonsoir,

Alors on m'a proposé ceci:NB.SI(F10:F59;"<>0
or, je ne suis pas fichu de l'integrer dans ce code:
Range("F60").FormulaLocal = "NB.SI(F10:F59;"<>0")"
Il me dit "erreur de syntaxe".
Selon vous quelle est cette erreur?

Merci d'avance

Cordialement
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 951
22 août 2010 à 21:39
Salut le forum

C'est juste un problème de guillemets

Range("F60").FormulaLocal = "=NB.SI(F10:F59;""<>0"")"

Mytå
0
nunnu27 Messages postés 20 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 22 août 2010 1
22 août 2010 à 21:56
Bonsoir Myta et merci de te pencher sur mon probleme ;)

Oui en effet, entre temps j'ai surfer sur le net et trouvé le coup des guillemets...
Pourtant même comme ça j'ai toujours un message d'erreur:
"erreur définie par l'application ou par l'objet"

Je te joints mon bout de code, cela vient peut etre de mon worksheet_change:
code:
Sub worksheet_change(ByVal target As Range)

    If Not Intersect(target, Range("E10:E59,F10:F59,H10:H59,K10:K59,N10:N59,Q10:Q59,T10:T59,W10:W59,Z10:Z59,AC10:AC59,AF10:AF59,AI10:AI59,AK10:AK59")) Is Nothing Then
   ' Range("E60").FormulaLocal = "=Somme(E1:E59)"
   ' Range("H60").FormulaLocal = "=Somme(H1:H59)"
    'Range("K60").FormulaLocal = "=Somme(K1:K59)"
    'Range("N60").FormulaLocal = "=Somme(N1:N59)"
   ' Range("Q60").FormulaLocal = "=Somme(Q1:Q59)"
   ' Range("T60").FormulaLocal = "=Somme(T1:T59)"
   ' Range("W60").FormulaLocal = "=Somme(W1:W59)"
   ' Range("Z60").FormulaLocal = "=Somme(Z1:Z59)"
   ' Range("AC60").FormulaLocal = "=Somme(AC1:AC59)"
   ' Range("AF60").FormulaLocal = "=Somme(AF1:AF59)"
    'Range("AI60").FormulaLocal = "=Somme(AI1:AI59)"
    'Range("AK60").FormulaLocal = "=Somme(AK1:AK59)"
    Range("F60").FormulaLocal = "=NB.SI(F10:F59);""<>0"")"
    
    End If
    
End Sub


Merci d'avance pour ton aide...

Cordialement
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 951
22 août 2010 à 22:33
Re le forum

Ca semble bien fonctionner

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, _
    Range("E10:E59,F10:F59,H10:H59,K10:K59,N10:N59,Q10:Q59," & _
        "T10:T59,W10:W59,Z10:Z59,AC10:AC59,AF10:AF59,AI10:AI59,AK10:AK59")) _
            Is Nothing Then
' Range("E60").FormulaLocal = "=Somme(E1:E59)"
' Range("H60").FormulaLocal = "=Somme(H1:H59)"
' Range("K60").FormulaLocal = "=Somme(K1:K59)"
' Range("N60").FormulaLocal = "=Somme(N1:N59)"
' Range("Q60").FormulaLocal = "=Somme(Q1:Q59)"
' Range("T60").FormulaLocal = "=Somme(T1:T59)"
' Range("W60").FormulaLocal = "=Somme(W1:W59)"
' Range("Z60").FormulaLocal = "=Somme(Z1:Z59)"
' Range("AC60").FormulaLocal = "=Somme(AC1:AC59)"
' Range("AF60").FormulaLocal = "=Somme(AF1:AF59)"
' Range("AI60").FormulaLocal = "=Somme(AI1:AI59)"
' Range("AK60").FormulaLocal = "=Somme(AK1:AK59)"
  Range("F60").FormulaLocal = "=NB.SI(F10:F59;""<>0"")"
End If

End Sub

Mytå
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nunnu27 Messages postés 20 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 22 août 2010 1
22 août 2010 à 22:53
Re a tous,

En effet, après avoir chercher comme un dératé (et c'est le mots !).
On m'a aimablement signalé qu'il y avait une parenthèse en trop
Range("F60").FormulaLocal = "=NB.SI(F10:F59);""<>0"")"

.....rohhh le boulet ! :(

Bref, en effet, cela fonctionne maintenant parfaitement.

Sur ce, merci encore pour tes interventions (et donc le temps passé à éplucher mes questions ;) ).

Bonne soirée et bon courage pour la semaine qui pointe le bout de son nez !

Amicalement

Manu

n.b:je considère ce topic comme résolu.

++
0