Bonjour,

Débutant sous VBA, j'ai écrit une petite macro qui doit me permettre
de renvoyer un alphabet (liste de caractères) à partir d'une liste de
mots.
Les mots sont listés dans des cellules contigües et sont passés à la
macro via un range r1, le range r2 est quand à lui un range de
cellules qui doit recevoir chaque caractère de l'alphabet généré.

Voici le code :

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
Public Function generate_alphabet(ByVal r1 As Range, ByVal r2 As
Range) As Boolean
 
Dim c As Range
 
return_str = ""
 
For Each c In r1
 
   For i = 1 To Len(c.Text)
       sub_str = Mid(c.Text, i, 1)
       If (InStr(1, return_str, sub_str, vbBinaryCompare) = 0) Then
       ' la lettre n'est pas encore répertoriée dans l'alphabet
           return_str = return_str & sub_str & "+"   ' <- pour le debug
           r2.Cells(c.row - 1, 1).Value = sub_str     ' <- la ligne qui pose problème
       End If
 
   Next i
Next c
 
generate_table = VRAI
 
End Function
et mon problème :

return_str est bien construite si je commente la ligne r2.Cells(...
Par contre, lorsque je décommente la fameuse ligne r2.Cells(... , la
boucle ne se fait plus : A la première exécution de r2.Cells(c.row -
1, 1).Value = sub_str, la macro semble s'arrêter et ne rien faire....

J'ai essayé plusieurs solutions pour essayer d'écrire dans ces cellules mais rien n'y fait... comme s'il était impossible d'écrire dans des cellules Excel depsui VBA...
Peut-être ya t'il un problème dans la syntaxe... quelqu'un aurait une
idée ?

Merci pour votre aide !

Pour info :
Excel 2002, SP1
VB 6.3