écrire dans des cellules définies par un range...

Le
pierreroth64
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 :

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.
Peut-être ya t'il un problème dans la syntaxe quelqu'un aurait une
idée ?

Merci pour votre aide !

Pierre
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #4324111
Bonjour,

Une fonction ne peut pas écrire dans une cellule.

JB
On 19 mar, 11:49, wrote:
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 :

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....
Peut-être ya t'il un problème dans la syntaxe... quelqu'un aurait une
idée ?

Merci pour votre aide !

Pierre


pierreroth64
Le #4324071
On 19 mar, 12:08, "JB"
Bonjour,

Une fonction ne peut pas écrire dans une cellule.

JB
On 19 mar, 11:49, wrote:

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 :

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.. ..
Peut-être ya t'il un problème dans la syntaxe... quelqu'un aurait u ne
idée ?

Merci pour votre aide !

Pierre



Ah... je ne savais pas... Est-il toujours impossible d'écrire dans des
cellules depuis VBA (ce qui semble peu probable) ou dois-je faire ça
dans une procédure ou autre ?
Merci !


JB
Le #4324041
Une fonction renvoie une valeur - ou un tableau - mais le code de la
fonction ne peut pas écrire directement dans le tableur .

http://boisgontierj.free.fr/fichiers/jb-FonctionsPersoExemples.zip
http://boisgontierj.free.fr/pages_site/fonctionsperso.htm

JB

On 19 mar, 12:14, wrote:
On 19 mar, 12:08, "JB"




Bonjour,

Une fonction ne peut pas écrire dans une cellule.

JB
On 19 mar, 11:49, wrote:

Bonjour,

Débutant sous VBA, j'ai écrit une petite macro qui doit me permet tre
de renvoyer un alphabet (liste de caractères) à partir d'une list e 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 :

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.ro w -
1, 1).Value = sub_str, la macro semble s'arrêter et ne rien faire ....
Peut-être ya t'il un problème dans la syntaxe... quelqu'un aurait une
idée ?

Merci pour votre aide !

Pierre



Ah... je ne savais pas... Est-il toujours impossible d'écrire dans des
cellules depuis VBA (ce qui semble peu probable) ou dois-je faire ça
dans une procédure ou autre ?
Merci !- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -




pierreroth64
Le #4324011
On 19 mar, 12:24, "JB"
Une fonction renvoie une valeur - ou un tableau - mais le code de la
fonction ne peut pas écrire directement dans le tableur .

http://boisgontierj.free.fr/fichiers/jb-FonctionsPersoExemples.ziphttp:// boisgontierj.free.fr/pages_site/fonctionsperso.htm

JB

On 19 mar, 12:14, wrote:

On 19 mar, 12:08, "JB"
Bonjour,

Une fonction ne peut pas écrire dans une cellule.

JB
On 19 mar, 11:49, wrote:

Bonjour,

Débutant sous VBA, j'ai écrit une petite macro qui doit me perm ettre
de renvoyer un alphabet (liste de caractères) à partir d'une li ste 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 :

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) T hen
' 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 li gne
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 fai re....
Peut-être ya t'il un problème dans la syntaxe... quelqu'un aura it une
idée ?

Merci pour votre aide !

Pierre



Ah... je ne savais pas... Est-il toujours impossible d'écrire dans des
cellules depuis VBA (ce qui semble peu probable) ou dois-je faire ça
dans une procédure ou autre ?
Merci !- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Il est donc impossible d'écrire dans un tableur depuis VBA... je
trouve ça vraimenttrès bizarre... il doit y avoir un moyen....




Publicité
Poster une réponse
Anonyme