vba somme.si en code macro + division plage de cellules

arnaud75017

XLDnaute Junior
Bonjour à tous

Je cherche en vain le code pour ma macro. Il s'agit de créer un tableau qui se remplit avec une fonction somme.si, comme le montre le fichier en PJ.

Une deuxième petite question: quand je veux diviser par cent une plage de colonnes, j'écris Range("R:V") = Range("R:V") / 100 ET j'ai comme message d'erreur "incompatibilité de type.

Merci par avance pour vos réponses!
 

Pièces jointes

  • exemple.xlsx
    9.5 KB · Affichages: 68
  • exemple.xlsx
    9.5 KB · Affichages: 87
  • exemple.xlsx
    9.5 KB · Affichages: 82

Juls

XLDnaute Junior
Re : vba somme.si en code macro + division plage de cellules

Bonjour,
Pour la première question il faudrait utiliser formulalocal pour y parvenir sans trop de difficulté.
La deuxième question je n'ai pas trop compris :confused:
Cordialement
 

arnaud75017

XLDnaute Junior
Re : vba somme.si en code macro + division plage de cellules

en gros je veux diviser mes cellules par 100. quand je le fais que sur une cellule ca marche, et si je selectionne une plage de cellule ca ne marche plus. L 'idée c'est de faire comme un copier coller spécial avec une division par 100.

POUR Formulalocal ca correspond à quoi ? Quelle est la syntaxe pour ca ? merci pour ta réactivité Juls
 

Juls

XLDnaute Junior
Re : vba somme.si en code macro + division plage de cellules

formula local
Insérer une formule dans la cellule B1 , par macro
Remarque : la formule doit etre écrite en anglais dans la macro
Range("B1").Formula = "=LINEST(G11:G14,F11:F14,FALSE,TRUE)"
Si vous écrivez la formule en français dans la macro ,utilisez "formulaLocal" :
Range("B1").formulaLocal = "=DROITEREG(G11:G14;F11:F14;FAUX;VRAI)"
https://www.excel-downloads.com/thr...nements-dates-et-calendriers-flash-ooo.92363/

Tu boucle pour toute la zone à remplir ou avec une meilleur solution qui te sera certainement proposée mais tu as déjà de quoi avancé normalement.

sinon pour l'autre il est effectivement possible de le faire par macro mais je suis malheureusement pris par le temps désolé, une personne très aimable devrait pouvoir t'aider ;)
 

Regueiro

XLDnaute Impliqué
Re : vba somme.si en code macro + division plage de cellules

Bonjour le Fil, arnaud75017,Juls ( on fait que de se croiser ? )
Arnaud
Avec un TCD tu obtiens ton 2 ème tableau sans problème
Par contre pour ta 2ème question ?
un peu plus d'info peut-être.

Voir fichier en PJ
A+
 

Pièces jointes

  • XLD_macro-division-plage-de-cellules-exemple.xlsx
    14.4 KB · Affichages: 63

Regueiro

XLDnaute Impliqué
Re : vba somme.si en code macro + division plage de cellules

Re
un Essai :
PHP:
Sub Macro4()
'Range("D9").FormulaLocal = Application.WorksheetFunction.SumProduct(Range("D2:E4")) / 100
Range("D9") = Application.SumProduct(Range("D2:E4")) / 100
End Sub
 

Regueiro

XLDnaute Impliqué
Re : vba somme.si en code macro + division plage de cellules

Re
Avec formulaLocal

PHP:
Sub Macro4()
'Range("D9").FormulaLocal = Application.WorksheetFunction.SumProduct(Range("D2:E4")) / 100
Range("D9") = Application.SumProduct(Range("D2:E4")) / 100
Range("D10").FormulaLocal = "=SOMMEPROD(D2:E4)/100"
End Sub
 

arnaud75017

XLDnaute Junior
Re : vba somme.si en code macro + division plage de cellules

merci pour vos réponse!

Pour le TCD je l'avais déjà fait manuellement et le but est d'en faire une macro pour qu'il soit automatisé d'années en années. Je viens d'essayer de le créer avec une macro, ca marche.
Mais je n'arrive pas à le rendre "variable" pour les autres années. Je m'explique: les années qui sont en "pivotfields" , sont à chaque fois "2014" puis "2013". Or , ca va changer d'année en année, et j'ai justement une variable "exer" qui correspond à l'année d'exercice. Quand je mets le nom de la variable soit exer à la place de "2014", ca ne marche pas .
voici le code :

Code:
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "baseannulpr!R1C1:R1000C16", Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:="tcd!R1C1", TableName:="Tableau croisé dynamique1", _
        DefaultVersion:=xlPivotTableVersion14
    Sheets("tcd").Activate
    Cells(1, 1).Select
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("SOUS CAT")
        .Orientation = xlRowField
        .Position = 1
    End With

ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique1").PivotFields[B]("2014"), "2014[/B]" _
        , xlSum

je voudrais avoir dans la dernière ligne de code :
Code:
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique1").PivotFields([B]exer), exer[/B] _
        , xlSum
 

Discussions similaires

Réponses
7
Affichages
356

Statistiques des forums

Discussions
312 465
Messages
2 088 650
Membres
103 904
dernier inscrit
thvalette