Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

4 réponses
Avatar
pierreroth64
Bonjour,

D=E9butant sous VBA, j'ai =E9crit une petite macro qui doit me permettre
de renvoyer un alphabet (liste de caract=E8res) =E0 partir d'une liste de
mots.
Les mots sont list=E9s dans des cellules contig=FCes et sont pass=E9s =E0 la
macro via un range r1, le range r2 est quand =E0 lui un range de
cellules qui doit recevoir chaque caract=E8re de l'alphabet g=E9n=E9r=E9.

Voici le code :

Public Function generate_alphabet(ByVal r1 As Range, ByVal r2 As
Range) As Boolean

Dim c As Range

return_str =3D ""

For Each c In r1

For i =3D 1 To Len(c.Text)
sub_str =3D Mid(c.Text, i, 1)
If (InStr(1, return_str, sub_str, vbBinaryCompare) =3D 0) Then
' la lettre n'est pas encore r=E9pertori=E9e dans l'alphabet
return_str =3D return_str & sub_str & "+" ' <- pour le
debug
r2.Cells(c.row - 1, 1).Value =3D sub_str ' <- la ligne
qui pose probl=E8me
End If

Next i
Next c

generate_table =3D VRAI

End Function

et mon probl=E8me :

return_str est bien construite si je commente la ligne r2.Cells(...
Par contre, lorsque je d=E9commente la fameuse ligne r2.Cells(... , la
boucle ne se fait plus : A la premi=E8re ex=E9cution de r2.Cells(c.row -
1, 1).Value =3D sub_str, la macro semble s'arr=EAter et ne rien faire....
Peut-=EAtre ya t'il un probl=E8me dans la syntaxe... quelqu'un aurait une
id=E9e ?

Merci pour votre aide !

Pierre

4 réponses

Avatar
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 une
idée ?

Merci pour votre aide !

Pierre


Avatar
pierreroth64
On 19 mar, 12:08, "JB" wrote:
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 !


Avatar
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.zip
http://boisgontierj.free.fr/pages_site/fonctionsperso.htm

JB

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





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 -




Avatar
pierreroth64
On 19 mar, 12:24, "JB" wrote:
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" wrote:

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....