Faire varier des plages de cellules en VBA

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 😱 [file name=Classeurtest_20060302001706.zip size=2430]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeurtest_20060302001706.zip[/file]
 

Pièces jointes

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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour