Faire varier des plages de cellules en VBA

  • Initiateur de la discussion Eliane
  • Date de début
E

Eliane

Guest
Bonjour à tous et à toutes

Qui pourait donner une piste à la petite débutante que je suis pour faire varier des plages de cellules en VBA :

Dans l'exemple de fichier joint, j'ai mis en B2 (de la feuil_2) le total de 3 'somme.si'
comme si j'avais seulement 3 groupes de 3 colonnes (charge;intervenant;projet) dans ma feuil_1.

Dans mon vrai fichier, j'ai en réalité autant de groupes de 3 colonnes que la largeur de la feuille le permet en allant jusqu'à la cellule IV..

Un point sur lequel je bloque est de trouver la syntaxe pour pouvoir faire varier les plages et les feuilles de la fonction Vba SUMIF dans une boucle..

L'objectif final est de coder une boucle en VBA plutôt que de tapper de très fastidieuses sommes de 'somme.si'

Le VBA permet-il de faire varier les feuilles et les ranges d'une fonction de type somme.si ?

D'avance merci de votre compréhension si la syntaxe que je cherche peut paraitre basique pour ce forum

Eliane :eek: [file name=Classeurtest_20060302001706.zip size=2430]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeurtest_20060302001706.zip[/file]
 

Pièces jointes

  • Classeurtest_20060302001706.zip
    2.4 KB · Affichages: 56

pierrejean

XLDnaute Barbatruc
bonjour eliane

vois si cela te conviens [file name=Classeurtest_20060302085357.zip size=10750]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeurtest_20060302085357.zip[/file]
 

Pièces jointes

  • Classeurtest_20060302085357.zip
    10.5 KB · Affichages: 65

ERIC S

XLDnaute Barbatruc
Bonjour Eliane et Pierrejean

comme j'ai bossé j réponds quand même, je n'ai pas regardé le fichier de Pierrejean

dans le projet vba Feuil_2

Private Sub Worksheet_Activate()
ChargePierre = 0
ChargePaul = 0
ChargeJacques = 0
ChargeMarie = 0
ChargeJosie = 0
ChargeSylvie = 0
Application.ScreenUpdating = False
For i = 2 To 256 Step 3
For j = 2 To 20
Select Case Sheets('Feuil_1').Cells(j, i).Value
Case 'Pierre'
ChargePierre = ChargePierre + Sheets('Feuil_1').Cells(j, i - 1).Value
Case 'Paul'
ChargePaul = ChargePaul + Sheets('Feuil_1').Cells(j, i - 1).Value
Case 'Jacques'
ChargeJacques = ChargeJacques + Sheets('Feuil_1').Cells(j, i - 1).Value
Case 'Marie'
ChargeMarie = ChargeMarie + Sheets('Feuil_1').Cells(j, i - 1).Value
Case 'Josie'
ChargeJosie = ChargeJosie + Sheets('Feuil_1').Cells(j, i - 1).Value
Case 'Sylvie'
ChargeSylvie = ChargeSylvie + Sheets('Feuil_1').Cells(j, i - 1).Value
End Select
Next j
Next i
Range('A2').Value = ChargePierre
Range('B2').Value = ChargePaul
Range('C2').Value = ChargeJacques
Range('D2').Value = ChargeMarie
Range('E2').Value = ChargeJosie
Range('F2').Value = ChargeSylvie
Application.ScreenUpdating = True
End Sub

mets à jour la Feuil_2 à chaque activation

A+
 

pierrejean

XLDnaute Barbatruc
bonjour ERIC S

regarde mon fichier tu verras que je me suis honteusement simplifié la vie

je prends en compte le fait qu'Eliane nous dit que tout se passe dans la plage A2:IV20

je te souhaite de trouver au plus vite le job que tu merites assurement

Pierre
 

ERIC S

XLDnaute Barbatruc
re PierreJean

j'ai regardé ton fichier mais il n'y a rien d'honteux,pour ma part, j'ai écrit au km, basic car je n'ai pas encore le réflexe 'objet'

Par contre je pense plus intéressant de ne pas calculer sur ordre (un oubli est si vite arrivé)

A+
 
E

Eliane

Guest
J'essaie vos sympatiques propositions ce vendredi et vous tiens informé avant lundi.

Effectivement, l'idée est d'avoir une mise à jour automatique de l'ensemble des 'somme.si' de la feuille 2 dès qu'un des noms de ressources est changé manuellement dans la feuille 1

Ce que je suppose avec la solution 'non objet' c'est que si la liste de choix s'allonge (ou change), mon code VBA doit être modifié ?

Dans la solution objet, y aurait-il une astuce pour qu'à chaque clik sur l'onglet feuille 2, les calculs se refassent tous automatiquement ?

Bon je passe aux essais et bises à tous pour les compléments d'info éventuels en ce sens

Lili
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Eliane, PierreJean, Éric, bonsoir le forum,

Je me permets d'envoyer une proposition qui utilise l'outil de recherche d'Excel en VBA. Tu peux élargir la plage autant que tu les désires à condition toutefois qu'il n'y ait pas de trous (cellule vide) dans la ligne 1 car j'utilise Range('A1').CurrentRegion pour définit la plage de recherche.

La macro événementielle Change sur l'onglet feuil_1 actualise les valeur de feuil_2 à chaque changement.
[file name=Classeur_Eliane.zip size=11314]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur_Eliane.zip[/file]
 

Pièces jointes

  • Classeur_Eliane.zip
    11 KB · Affichages: 63

pierrejean

XLDnaute Barbatruc
bonjour Eliane

comme le signale Robert mettre la macro en
feuil1_change permet d'obtenir les sommes a chaque mise a jour

pour ce qui est de l'accroissement de la region testee on peut jouer sur range('A2:IV20') ce que j'ais fait en mettant ('A2:IV25')

A toi de choisir la version qui te conviens le mieux

L'honneteté m'oblige à dire que celle de Robert est nettement plus professionnelle [file name=Classeurtest_20060303091827.zip size=10750]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeurtest_20060303091827.zip[/file]
 

Pièces jointes

  • Classeurtest_20060303091827.zip
    10.5 KB · Affichages: 40

Discussions similaires

Statistiques des forums

Discussions
312 807
Messages
2 092 299
Membres
105 331
dernier inscrit
tomlecariste