Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
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 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

  • Question
Microsoft 365 Code VBA
Réponses
10
Affichages
693
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…