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

Le
pierreroth64
Bonjour,

Dbutant sous VBA, j'ai crit une petite macro qui doit me permettre
de renvoyer un alphabet (liste de caractres) partir d'une liste de
mots.
Les mots sont lists dans des cellules contiges et sont passs la
macro via un range r1, le range r2 est quand lui un range de
cellules qui doit recevoir chaque caractre de l'alphabet gnr.

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 rpertorie 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 problme
End If

Next i
Next c

generate_table = VRAI

End Function

et mon problme :

return_str est bien construite si je commente la ligne r2.Cells(
Par contre, lorsque je dcommente la fameuse ligne r2.Cells( , la
boucle ne se fait plus : A la premire excution de r2.Cells(c.row -
1, 1).Value = sub_str, la macro semble s'arrter et ne rien faire.
Peut-tre ya t'il un problme dans la syntaxe quelqu'un aurait une
ide ?

Merci pour votre aide !

Pierre
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