Ajouter une variable à la suite dans une boucle

Bonjour,

Voici ci joint le fichier excel de mon projet.

Contexte :

Je souhaite réaliser à l'aide d'une macro une moyenne de valeurs, avec pour contrainte que la formule soit affichable par l'utilisateur. Pour cela je compte utiliser la fonction Formula après avoir ajouté les adresses des cellules pour lesquelles je veux cette moyenne.

Problème :

Je n'arrive pas à ajouter les adresses des cellules les unes à la suite des autres dans une boucles. Il doit surement exister une astuce, mais je ne la connais pas.

Voici le code utilisé ainsi que le fichier vba :

Sub ConvertirLettrColonne()
Dim Chaine As String
Dim Lettre_col As String

'Repérage de la dernière cellule non vide
Dercol = Cells(25, Cells.Columns.Count).End(xlToLeft).Column

'Boucle de la cellule 10 jusqu'à la dernière colonne
With ThisWorkbook.Worksheets("USL")
    For i = 10 To Dercol
    'récupération de la lettre de la colonne
    Chaine = Split(Cells(23, i).Address, "$")(1)
    'rajout du numéro de la ligne et du séparateur
    Chaine = Chaine & "25" & ";"
    'ZONE, c'est ici que je souhaiterai que chaque résultat de chaine s'ajoute à la suite du précédent
    Liste = Chaine
    'Boucle avec un pas de 5 cellule entre chaque
    i = i + 4
    Next
End With

Merci d'avance pour votre aide,

Batoine

Bonsoir,

As-tu essayé en remplaçant :

Liste = Chaine

par :

liste = liste & Chaine

A tester

Bonne soirée

Bouben

Bonjour Bouben,

Merci beaucoup ! Ta solution fonctionne. Je n'avais pas réalisé que cela fonctionnai comme un compteur mais qu'avec des caractères de types string, il fallait utiliser le &.

J'ai maintenant un autre problème, je le poste ici car c'est toujours dans la finalité de réussir à réaliser cette moyenne.

Lorsque j'essaie d'utiliser la fonction formula, j'obtiens un message d'erreur 1004 : Erreur définie par l'application ou par l'objet.

Il me semble que ma variable "Liste_ok" n'est pas réconnue.

Sais-tu comment je peux la résoudre ?

Voici le code et mon projet :

Sub tirer_formule()
'
' tirer_formule Macro
'

'
    Selection.autofill Destination:=Range("D25:H50"), Type:=xlFillDefault
    Range("D25:H50").Select
End Sub

Sub ConvertirLettrColonne()
Dim Chaine As String
Dim Lettre_col As String

'Repérage de la dernière cellule non vide
Dercol = Cells(25, Cells.Columns.Count).End(xlToLeft).Column

'Boucle de la cellule 10 jusqu'à la dernière colonne
With ThisWorkbook.Worksheets("USL")
    For i = 10 To Dercol
        'récupération de la lettre de la colonne
        Chaine = Split(Cells(23, i).Address, "$")(1)
        'rajout du numéro de la ligne et du séparateur
        Chaine = Chaine & "25" & ";"
        'ZONE, c'est ici que je souhaiterai que chaque résultat de chaine s'ajoute à la suite du précédent
        liste = liste & Chaine
        'Boucle avec un pas de 5 cellule entre chaque
        i = i + 4
    Next
End With

'supprimer le dernier ";"
liste_ok = Left(liste, Len(liste) - 1)

'Erreur sur la ligne de code suivante (Erreur 1004 : Erreur définie par l'application ou par l'objet)
'Selon moi il ne comprend pas la variable liste_ok pourtant définie comme une string
Cells(25, 4).Formula = "=MOYENNE(" & liste_ok & ")"

End Sub

Merci d'avance !

Batoine

Re-

Une piste à tester :

Remplacer :

Cells(25, 4).Formula = "=MOYENNE(" & liste_ok & ")"

Par

Cells(25, 4).FormulaLocal = "=MOYENNE(" & liste_ok & ")"

Bonne soirée

Bouben

Bonjour,

Une proposition à étudier et à adapter, si besoin.

Cdlt.

Option Explicit

Public Sub CreateFormulas()
Dim ws As Worksheet
Dim Dercol As Long, I As Long, J As Long
Dim Chaine As String, Liste As String
Dim modeCalc As XlCalculation

    With Application
        modeCalc = .Calculation
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
    End With

    Set ws = ActiveWorkbook.Worksheets("USL")

    With ws
        Dercol = .Cells(24, Cells.Columns.Count).End(xlToLeft).Column
        For I = 0 To 4
            For J = 10 To Dercol
                Chaine = Split(Cells(24, I + J).Address, "$")(1)
                Chaine = Chaine & "25" & ","
                Liste = Liste & Chaine
                J = J + 4
            Next J
            Liste = Left(Liste, Len(Liste) - 1)
            .Cells(25, I + 4).Formula = "=AVERAGE(" & Liste & ")"
            Liste = ""
        Next I
        .Range("D25:H25").AutoFill Destination:=.Range("D25:H50"), Type:=xlFillDefault
        'ou
        '.Range("D25:H50").FillDown
    End With

    Application.Calculation = modeCalc

    Set ws = Nothing

End Sub

Bonjour Bouben, Jean-Eric,

Je vous remercie pour votre aide à tous les deux. J'ai utilisé l'élément de réponse de bouben qui corrsepondait exactement à mon attente.

Je suis vraiment impressionné par la pertinence de tes réponses !

Mille merci

Batoine

Rechercher des sujets similaires à "ajouter variable suite boucle"