Microsoft 365 VBA : boucle while colonnes différentes

VBA_dev_Anne_Marie

XLDnaute Occasionnel
Bonjour,
Je souhaiterais faire le calcul sur une colonne et ensuite, sur la suivante, décalée de 3 colonnes.
Le nombre de colonnes à calculer je stocke dans une variable "nombre".

Je ne sais pas comment améliorer mon code pour changer les colonnes. Voilà ce que j'ai actuellement en dur (nombre=2) :
VB:
  While Sheets("CALCUL").Cells(Num_Ligne, 5) <> ""
    
        Sheets("CALCUL").Cells(Num_Ligne, 8).Value = Sheets("CALCUL").Cells(Num_Ligne, 6) + Sheets("CALCUL").Cells(Num_Ligne, 7)
        Sheets("CALCUL").Cells(Num_Ligne, 8).NumberFormat = "#,##0.00€"
      
        Sheets("CALCUL").Cells(Num_Ligne, 11).Value = Sheets("CALCUL").Cells(Num_Ligne, 9) +    Sheets("CALCUL").Cells(Num_Ligne, 10)
        Sheets("CALCUL").Cells(Num_Ligne, 11).NumberFormat = "#,##0.00€"

        Num_Ligne = Num_Ligne + 1
      
    Wend

En fait, je ne sais pas comment écrire Sheets("CALCUL").Cells(Num_Ligne, 8 + colonne) où colonne=3 pour la ligne 4 et 5 de mon code.

Merci pour votre aide !
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

J'opterais pour une écriture du genre :
VB:
    With Sheets("CALCUL")

        While .Cells(Num_ligne, 5) <> ""

            With .Cells(Num_ligne, 8)
                .Value = .Cells(Num_ligne, 6) + .Cells(Num_ligne, 7)
                .NumberFormat = "#,##0.00€"
            End With

            With .Cells(Num_ligne, 11)
                .Value = .Cells(Num_ligne, 9) + .Cells(Num_ligne, 10)
                .NumberFormat = "#,##0.00€"
            End With

            Num_ligne = Num_ligne + 1

        Wend
    End With

Si la première colonne est la colonne 8 la suivante sera 8+Nombre, .Cells(Num_Ligne, 8 + Nombre)
Où Nombre est le nombre de colonnes de décalage à droite.

Comprends pas où est la difficulté.

Eventuellement soyez plus précis et joignez un fichier.
 

dysorthographie

XLDnaute Accro
Bonjour,
un truc du genre ?
VB:
Sub test()
For c = 8 To 100 Step 3 'C pour colonne  Step 3 pas de3 colonnes!
    With Sheets("CALCUL")
       With .Range(.Cells(2, c), .Cells(.Cells(.Rows.Count, 5).End(xlUp).Row, c))
            .NumberFormat = "#,##0.00€"
            .FormulaR1C1 = "=RC[-1]+RC[-2]"
            .Value = .Value
         End With
    End With
Next
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali