boucle pour addition en sautant des lignes

ngs

XLDnaute Junior
Bonjour le forum,

mon fichier excel contient 2 onglets " base" et " resultat"

1/ à partir du 1 er onglet ("base"), je souhaiterais avoir une macro en boucle (ou itération) qui m'additionne les valeurs de chaque colonne. Il y a une condition a intégrer : additionner les lignes avec un saut de 3.

Vous trouverez le fichier en pièce jointe .
par exemple , l'addition du produit "pdt1" prendra les valeurs 1, 1, 1.... Celle du produit "pdt2" prendra les valeurs 4, 4, 4 ...jusqu'à la dernière ligne (65535) et ainsi de suite pour les autres produits.

les résultats doivent s'afficher dans l'onglet "resultat"

2/ à partir du 1 er onglet ("base"), une autre boucle pour cette fois-ci faire une addition par nom.
exemple, le nom "soc" prendra 1, 4, 7 .... et le nom "Etab" prendra 2, 5, 8....

Les résultats doivent également apparaître dans l'onglet "resultat".


J'ai écris un bout de code mais je bloque

Par avance, merci de votre aide.

ngs
 

Pièces jointes

  • macro addition par saut de ligne.xls
    39 KB · Affichages: 106

ngs

XLDnaute Junior
Re : boucle pour addition en sautant des lignes

néné06,

je vous renvoie le fichier avec les mêmes emplacements sur mon fichier de travail.

merci
 

Pièces jointes

  • Copie de macro addition par saut de ligne.xls
    45 KB · Affichages: 62
  • Copie de macro addition par saut de ligne.xls
    45 KB · Affichages: 61
  • Copie de macro addition par saut de ligne.xls
    45 KB · Affichages: 61

néné06

XLDnaute Accro
Re : boucle pour addition en sautant des lignes

Bonjour le Forum

@ngs

Il est évident que la routine que j'ai posté, ne peut fonctionner sur ton nouveau tableau !!!
Si tu habites à l'avant-dernier étage d'un immeuble, que tu indique à une personne de sonner à la porte de l'avant dernier-étage et que entre-temps ,tu rajoutes de cinq étages.
Cette personne ne trouvera jamais ta porte.
C'est exactement ce que tu as fait en rajoutant des lignes et des colonnes dans ton nouveau tableau.
De plus la première donnée prise en compte n'est pas un nombre mais du texte (d'où erreur).
Regardes mon code , déchiffres le pour apprendre et effectuer les modifications.
Renvoies un post si tu ne t'en sort pas.

A+
 

job75

XLDnaute Barbatruc
Re : boucle pour addition en sautant des lignes

Bonjour le fil, le forum,

Cette macro est toujours très rapide car elle utilise un tableau (tablo) :

Code:
Sub Sommes()
Dim tablo, ub&, col%, lig&, i&
tablo = Intersect(Sheets("base").[C8:IV65536], Sheets("base").UsedRange)
ub = UBound(tablo)
For col = 1 To UBound(tablo, 2)
  For lig = 1 To 3
    For i = lig + 3 To ub Step 3
      tablo(lig, col) = tablo(lig, col) + tablo(i, col)
    Next
  Next
Next
With Sheets("resultat")
  .[D6:IV8].ClearContents 'RAZ
  .[D6].Resize(3, UBound(tablo, 2)) = tablo
  .Activate 'facultatif
End With
End Sub
Bien entendu dans la plage base!C8:IV65536 il ne doit pas y avoir de valeurs texte.

Fichier joint.

A+
 

Pièces jointes

  • Sommes(1).xls
    50 KB · Affichages: 40

job75

XLDnaute Barbatruc
Re : boucle pour addition en sautant des lignes

Re,

On peut aussi en plus copier la ligne de titres :

Code:
With Sheets("resultat")
  .[D5:IV8].ClearContents 'RAZ
  .[D5].Resize(, UBound(tablo, 2)) = Sheets("base").[C7].Resize(, UBound(tablo, 2)).Value 'titres
  .[D6].Resize(3, UBound(tablo, 2)) = tablo
  .Activate 'facultatif
End With
Fichier (2).

A+
 

Pièces jointes

  • Sommes(2).xls
    59 KB · Affichages: 36

job75

XLDnaute Barbatruc
Re : boucle pour addition en sautant des lignes

Re,

Hum, en intégrant la ligne de titres dans le tableau tablo c'est plus simple :

Code:
Sub Sommes()
Dim tablo, ub&, col%, lig&, i&
tablo = Intersect(Sheets("base").[C7:IV65536], Sheets("base").UsedRange) 'avec ligne de titres
ub = UBound(tablo)
For col = 1 To UBound(tablo, 2)
  For lig = 2 To 4
    For i = lig + 3 To ub Step 3
      tablo(lig, col) = tablo(lig, col) + tablo(i, col)
    Next
  Next
Next
With Sheets("resultat")
  .[D5:IV8].ClearContents 'RAZ
  .[D5].Resize(4, UBound(tablo, 2)) = tablo
  .Activate 'facultatif
End With
End Sub
Fichier (3).

A+
 

Pièces jointes

  • Sommes(3).xls
    59 KB · Affichages: 44

néné06

XLDnaute Accro
Re : boucle pour addition en sautant des lignes

Re ,

Une autre solution qui calcul la place et taille du tableau.
On peut donc rajouter des lignes et colonnes vierges .

A+
 

Pièces jointes

  • Copie de Copie de macro addition par saut de ligne-3.xls
    47.5 KB · Affichages: 36

ngs

XLDnaute Junior
Re : boucle pour addition en sautant des lignes

Bonjour à vous et le forum,

En tant que débutant, je ne capte pas tout. lol!

1/ Néné06, je reviens sur le 1 er code où tu m'expliquais mon erreur en illustrant tes propros avec l'ascenseur, j'ai modifié certaines choses mais rien de bon, je vais chercher de nouveau et te reviens. Quant au dernier code du fichier "copie de copie ...ligne3" que tu m'as envoyé, je vais également le tester tout en essayant de comprendre la logique.

2/ Job 75, dans le code du fichier "somme(3) " , j'aimerai savoir
a/ce que c'est UBound , UsedRange.
b/ dans une déclaration , donner un type de variable n'est-il pas obligatoire? si non , pourquoi?

Merci pour votre aide.
ngs
 

job75

XLDnaute Barbatruc
Re : boucle pour addition en sautant des lignes

Re,

2/ Job 75, dans le code du fichier "somme(3) " , j'aimerai savoir
a/ce que c'est UBound , UsedRange.
b/ dans une déclaration , donner un type de variable n'est-il pas obligatoire? si non , pourquoi?

Ubound(tablo) ou Ubound(tablo, 1) renvoie le nombre de lignes du tableau

Ubound(tablo, 2) renvoie le nombre de colonnes

UsedRange comme son nom l'indique c'est toute la plage utilisée dans la feuille

Quand on n'indique pas le type de variable, le type Variant est affecté par défaut.

Dans ma macro, tablo est de type Variant.

Edit : IV c'est la dernière colonne sur Excel 2003.

Le tableau peut ainsi aller jusqu'à cette colonne, même sur Excel 2007 ça devrait suffire, non ???

A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 559
Messages
2 089 604
Membres
104 224
dernier inscrit
Brilma