Bonjour à tous,

Sans transition, voici ma question!

-> J'ai un fichier avec un seul onglet ("feuil1").
-> Dans cet onglet, les cellules F1 à F9 sont (ou non) une à une remplies et c'est tout "l'enjeu" de ma discussion.
-> Je veux concaténer le contenu de ces mêmes cellules dans une autre cellule (A3) uniquement lorsqu'elles sont non vides (de F1 à F9).
Ex : F1 est vide, F3 est vide ainsi que F9 --> je concatène F2, F4, F5, F6, F7, F8 uniquement

Le code que j'ai fait marche SAUF lorsque F1 est vide. Je ne comprends pas la raison. Le voici : (sorti de son contexte et donc simplifié afin d'avoir vos lumières plus rapidement!) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Function ConcatenationLR(ligne As Integer, counter As Integer) As String
 
Dim lignef As Integer
Dim expression As String
Dim counterf As Integer
 
lignef = ligne
counterf = counter
expression = Range("F" & lignef).Value
 
'Test si champs vide
If expression <> "" Then
    ' concaténer valeurs des cellules si non vides
    For m = lignef + 1 To lignef + counterf
        If Range("F" & m) <> "" Then
        expression = expression & ", " & Range("F" & m)
        End If
    Next
Else: Call ConcatenationLR(lignef + 1, counterf - 1)
End If
'test de la valeur d'expression -> prend bien la bonne valeur même quand F1 est vide!
A = MsgBox(expression, vbDefaultButton2)
ConcatenationLR = expression
 
-------------------------------------------------------------------------
End Function
Sub ok()
 
Sheets("Feuil1").Select
'Range("A3").Value ne prend pas la bonne valeur quand F1 est vide.....!
Range("A3").Value = ConcatenationLR(1, 8)
 
End Sub
Voilà, je suis nouveau sur le forum mais crois pourtant beaucoup en lui!

Merci à tous et n'hésitez pas à donner votre avis!

Ciao!