[Catégorie modifiée VB6 --> VBA] Petit problème VBA/Excel

Résolu
2000Kennedy Messages postés 40 Date d'inscription mercredi 8 septembre 2010 Statut Membre Dernière intervention 16 novembre 2010 - 9 sept. 2010 à 12:37
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 9 sept. 2010 à 16:26
Bonjour,

Je suis débutant en VBA et je rencontre un petit problème...
J'ai i onglet dans mon fichier Excel. Dans la cellule AA3 de chaque onglet, j'ai effectué un calcul de la forme "=NBVAL(A:Z)" j'ai donc le nombre de valeurs sur mon onglet dans la case AA3 de chaque onglet. ^^
Maintenant je souhaiterais sommer toutes les cases AA3 des différents onglets, pour avoir le nombre total de valeurs.

Comment faut-il faire pour selectioner uniquement la valeur de chaque cellule et non pas la formule, et les additioner dans un autre onglet à la cellule I28...

voilà ce que j'ai fait.:
et cela ne marche pas :(
Sub CptValSo(Nb_onglet)


Sheets("REF").Select
Range("I18").Select
Application.CutCopyMode = False
ActiveCell.Paste = _
"=F1!AA3+F2!AA3+F3!AA3+F4!AA3+F5!AA3+F6!AA3+F7!AA3+F8!AA3+F9!AA3+F10!AA3"

End Sub

je souhaiterais l'adapter pour le nombre i d'onglets.

merci d'avance

7 réponses

foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
9 sept. 2010 à 14:21
Bonjour,

Pas besoin de faire de copier coller. Autant sommer tout de suite en VBA.

Function CptValSo(StartSheet As Worksheet, Nb_onglet As Long) As Long

    Dim i As Long
    CptValSo = 0
    
    For i = StartSheet.Index To (StartSheet.Index + Nb_onglet - 1)
        CptValSo = CptValSo + CLng(Worksheets(i).Range("AA3").Value)
    Next
       
End Function

Sub Calcul()
    Sheets("REF").Range("I18").Value = CptValSo(Worksheets("F1"), 5)
End Sub
3
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
9 sept. 2010 à 14:25
Bonjour,
pour "Ecrire" une formule dans une feuille via VBA, il faut utiliser l'instruction FormulaR1C1

Sinon tu peux aussi lire & ecrire une valeur directement dans une cellule
Par exemple tu pourrais faire un code comme celui-ci :

'Nombre de feuille dans le classeur
NbFeuille = ActiveWorkbook.sheets.count ' ou sinon.. la valeur de ton I 

' récupération des valeurs
For j=1 to NbFeuille
Valeur_AA3 = Sheets(j).range("AA3").value
Somme_AA3 = Somme_AA3 + Valeur
Next

'recopie dans la feuille REF
Sheets("REF").Range("I18").value = Somme_AA3



Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 sept. 2010 à 14:26
Salut
En supposant que cette syntaxe fonctionne, il te suffit de préparer la chaine de texte à soumettre au .Paste
Une boucle désignera chaque feuille à tour de rôle:
    Dim sTemp As String, r As Long
    sTemp = "="
    For r = 1 To Nb_onglet
        sTemp = sTemp & "F" & CStr(r) & "!AA3+"
    Next r
    ' supprime le dernier +
    sTemp = Left$(sTemp, Len(sTemp) - 1)
    ActiveCell.Paste = sTemp

PS : C'est une TRES mauvaise idée d'appeler des feuilles comme des noms de cellule - ça te jouera des tours un de ces quatre matins.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 sept. 2010 à 14:28
Waouh !
3 méthodes différentes en moins de 5 minutes !
0

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

Posez votre question
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
9 sept. 2010 à 14:34
Ca c'est du forum réactif

Si avec ça 2000kennedy ne trouve pas son bonheur... je ne sais pas ce qu'il faut

Bonne journée à tous

Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
2000Kennedy Messages postés 40 Date d'inscription mercredi 8 septembre 2010 Statut Membre Dernière intervention 16 novembre 2010
9 sept. 2010 à 15:31
Merci pour vos réponses :) j'ai trouvé mon bonheur :).

Par contre j'ai eu du mal avec vos codes Jack et Jordane45.
Je suis un peu mauvais en vba lol. Du coup j'ai eu du mal à adapter votre code à ce que j'ai.

Pour ce qui est du nom des feuilles, tu as raison. Autant dans mon excel elles ont un vrai nom autant ici en postant je n'ai pas penser que cela pouvait porter à confusion.

Encore un grand merci ;)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 sept. 2010 à 16:26
ah, d'accord. C'est rassurant.
0
Rejoignez-nous