Dans un document, j’ai différents emplacements marqués d’un signet pour l’inscription
de degrés par exemple, 10° ou 5°.
Pour chacun de ces signets, j’ai besoin de récupérer la valeur du degré et
la mettre dans une variable.
Alors, j’ai créé la procédure Function suivante car, si j’ai bien compris,
ce type de procédure sert à retourner une valeur.
Public Function RetourneDegre(Doc As String, S As String) As Long
Dim Degre As String
Dim SymbDeg As String
SymbDeg = Chr(176) '°
Degre = Documents(Doc).Bookmarks(S).Range.Text
Debug.Print Degre
Debug.Print SymbDeg
'Degre = Trim(Degre)
'Debug.Print Degre
Degre = Replace(Trim(Degre), SymbDeg, "") ' retourne la valeur sans les
espaces et le symbole de degré
Debug.Print Degre
End Function
Pour l’utiliser :
Sub TestDegre()
Dim NomDoc As String
NomDoc = ActiveDocument.Name
Dim deg
deg = RetourneDegre(NomDoc, "ChrgCalDegG")
Debug.Print "Le degré est " & deg
End Sub
Le problème est que la « function » retourne la valeur désirée mais pas
lorsque je l’appelle??? J’ai testé différents types pour la valeur de retour
du genre String, Integer, Variant, mais je n’ai rien en retour. Seul le type
Long me retourne 0???.
Si quelqu’un d’expertise pouvait m’éclairer pour m’aider à comprendre où est
l’erreur, j’en serais très ravie.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Geo
Bonjour Jocelyne
[ Cette réponse est faite sur le forum public Word : news://msnews.microsoft.com/microsoft.public.fr.word ]
Alors, j’ai créé la procédure Function suivante car, si j’ai bien compris, ce type de procédure sert à retourner une valeur.
Oui, mais il faut lui dire ce qu'elle doit retourner, c'est juste cela qui manque.
Public Function RetourneDegre(Doc As String, S As String) As Long
Donc c'est une valeur entière que vous attendez, mais un Long c'est peut-être exagéré :)
Sinon c'est tout bon sauf : RetourneDegre = Replace(Trim(Degre), SymbDeg, "") ' retourne la valeur
Par prudence je ferais : Dim NbDegré as string NbDegré = Replace(Degre, SymbDeg, "") If IsNumeric(NbDegré) then RetourneDegre = val(nbdegré) else RetourneDegre = 0 debug.print "Erreur signet : " & S endif
Pas testé.
-- A+
Bonjour Jocelyne
[ Cette réponse est faite sur le forum public Word :
news://msnews.microsoft.com/microsoft.public.fr.word ]
Alors, j’ai créé la procédure Function suivante car, si j’ai bien compris, ce type de
procédure sert à retourner une valeur.
Oui, mais il faut lui dire ce qu'elle doit retourner, c'est juste cela
qui manque.
Public Function RetourneDegre(Doc As String, S As String) As Long
Donc c'est une valeur entière que vous attendez, mais un Long c'est
peut-être exagéré :)
Sinon c'est tout bon sauf :
RetourneDegre = Replace(Trim(Degre), SymbDeg, "") ' retourne la valeur
Par prudence je ferais :
Dim NbDegré as string
NbDegré = Replace(Degre, SymbDeg, "")
If IsNumeric(NbDegré) then
RetourneDegre = val(nbdegré)
else
RetourneDegre = 0
debug.print "Erreur signet : " & S
endif
[ Cette réponse est faite sur le forum public Word : news://msnews.microsoft.com/microsoft.public.fr.word ]
Alors, j’ai créé la procédure Function suivante car, si j’ai bien compris, ce type de procédure sert à retourner une valeur.
Oui, mais il faut lui dire ce qu'elle doit retourner, c'est juste cela qui manque.
Public Function RetourneDegre(Doc As String, S As String) As Long
Donc c'est une valeur entière que vous attendez, mais un Long c'est peut-être exagéré :)
Sinon c'est tout bon sauf : RetourneDegre = Replace(Trim(Degre), SymbDeg, "") ' retourne la valeur
Par prudence je ferais : Dim NbDegré as string NbDegré = Replace(Degre, SymbDeg, "") If IsNumeric(NbDegré) then RetourneDegre = val(nbdegré) else RetourneDegre = 0 debug.print "Erreur signet : " & S endif
Pas testé.
-- A+
michdenis
Bonjour,
Dans ta fonction, Public Function RetourneDegre(Doc As String, S As String) As Long tu as oublié cette ligne de code comme dernière :
Retourne = Degre
"Jocelyne" a écrit dans le message de groupe de discussion : #0p$ Bonjour à tous,
Dans un document, j'ai différents emplacements marqués d'un signet pour l'inscription de degrés par exemple, 10° ou 5°.
Pour chacun de ces signets, j'ai besoin de récupérer la valeur du degré et la mettre dans une variable.
Alors, j'ai créé la procédure Function suivante car, si j'ai bien compris, ce type de procédure sert à retourner une valeur.
Public Function RetourneDegre(Doc As String, S As String) As Long
Dim Degre As String
Dim SymbDeg As String
SymbDeg = Chr(176) '°
Degre = Documents(Doc).Bookmarks(S).Range.Text
Debug.Print Degre
Debug.Print SymbDeg
'Degre = Trim(Degre)
'Debug.Print Degre
Degre = Replace(Trim(Degre), SymbDeg, "") ' retourne la valeur sans les espaces et le symbole de degré
Debug.Print Degre
End Function
Pour l'utiliser :
Sub TestDegre()
Dim NomDoc As String
NomDoc = ActiveDocument.Name
Dim deg
deg = RetourneDegre(NomDoc, "ChrgCalDegG")
Debug.Print "Le degré est " & deg
End Sub
Le problème est que la « function » retourne la valeur désirée mais pas lorsque je l'appelle??? J'ai testé différents types pour la valeur de retour du genre String, Integer, Variant, mais je n'ai rien en retour. Seul le type Long me retourne 0???.
Si quelqu'un d'expertise pouvait m'éclairer pour m'aider à comprendre où est l'erreur, j'en serais très ravie.
Merci
Jocelyne
Bonjour,
Dans ta fonction,
Public Function RetourneDegre(Doc As String, S As String) As Long
tu as oublié cette ligne de code comme dernière :
Retourne = Degre
"Jocelyne" <jocelyne.roberge@fournisseur.com> a écrit dans le message de groupe de
discussion : #0p$MrSxKHA.5936@TK2MSFTNGP04.phx.gbl...
Bonjour à tous,
Dans un document, j'ai différents emplacements marqués d'un signet pour l'inscription
de degrés par exemple, 10° ou 5°.
Pour chacun de ces signets, j'ai besoin de récupérer la valeur du degré et
la mettre dans une variable.
Alors, j'ai créé la procédure Function suivante car, si j'ai bien compris,
ce type de procédure sert à retourner une valeur.
Public Function RetourneDegre(Doc As String, S As String) As Long
Dim Degre As String
Dim SymbDeg As String
SymbDeg = Chr(176) '°
Degre = Documents(Doc).Bookmarks(S).Range.Text
Debug.Print Degre
Debug.Print SymbDeg
'Degre = Trim(Degre)
'Debug.Print Degre
Degre = Replace(Trim(Degre), SymbDeg, "") ' retourne la valeur sans les
espaces et le symbole de degré
Debug.Print Degre
End Function
Pour l'utiliser :
Sub TestDegre()
Dim NomDoc As String
NomDoc = ActiveDocument.Name
Dim deg
deg = RetourneDegre(NomDoc, "ChrgCalDegG")
Debug.Print "Le degré est " & deg
End Sub
Le problème est que la « function » retourne la valeur désirée mais pas
lorsque je l'appelle??? J'ai testé différents types pour la valeur de retour
du genre String, Integer, Variant, mais je n'ai rien en retour. Seul le type
Long me retourne 0???.
Si quelqu'un d'expertise pouvait m'éclairer pour m'aider à comprendre où est
l'erreur, j'en serais très ravie.
Dans ta fonction, Public Function RetourneDegre(Doc As String, S As String) As Long tu as oublié cette ligne de code comme dernière :
Retourne = Degre
"Jocelyne" a écrit dans le message de groupe de discussion : #0p$ Bonjour à tous,
Dans un document, j'ai différents emplacements marqués d'un signet pour l'inscription de degrés par exemple, 10° ou 5°.
Pour chacun de ces signets, j'ai besoin de récupérer la valeur du degré et la mettre dans une variable.
Alors, j'ai créé la procédure Function suivante car, si j'ai bien compris, ce type de procédure sert à retourner une valeur.
Public Function RetourneDegre(Doc As String, S As String) As Long
Dim Degre As String
Dim SymbDeg As String
SymbDeg = Chr(176) '°
Degre = Documents(Doc).Bookmarks(S).Range.Text
Debug.Print Degre
Debug.Print SymbDeg
'Degre = Trim(Degre)
'Debug.Print Degre
Degre = Replace(Trim(Degre), SymbDeg, "") ' retourne la valeur sans les espaces et le symbole de degré
Debug.Print Degre
End Function
Pour l'utiliser :
Sub TestDegre()
Dim NomDoc As String
NomDoc = ActiveDocument.Name
Dim deg
deg = RetourneDegre(NomDoc, "ChrgCalDegG")
Debug.Print "Le degré est " & deg
End Sub
Le problème est que la « function » retourne la valeur désirée mais pas lorsque je l'appelle??? J'ai testé différents types pour la valeur de retour du genre String, Integer, Variant, mais je n'ai rien en retour. Seul le type Long me retourne 0???.
Si quelqu'un d'expertise pouvait m'éclairer pour m'aider à comprendre où est l'erreur, j'en serais très ravie.
Merci
Jocelyne
Jocelyne
WOW! Un pas de plus dans mon apprentissage.
Je n'avais pas réalisé que la fonction elle-même était une variable. Je me demandais comment arriver à la mettre dedans.
Donc c'est une valeur entière que vous attendez, mais un Long c'est peut-être exagéré :)
Il me semblait aussi que ce n'était pas le bon type mais c'était le seul qui me retournait une valeur :)
RetourneDegre = Replace(Trim(Degre), SymbDeg, "") ' retourne la valeur
Par prudence je ferais : Dim NbDegré as string NbDegré = Replace(Degre, SymbDeg, "") If IsNumeric(NbDegré) then RetourneDegre = val(nbdegré) else RetourneDegre = 0 debug.print "Erreur signet : " & S endif
Pas testé.
Je l'ai testé et tout fonctionne à merveille. Juste une petite question, est-ce je dois retirer la ligne Degre = Replace(Trim(Degre), SymbDeg, "") de mon code? Votre code semble enlever les espaces en même temps que le symbole de degré???
Merci encore une fois de votre généreuse participation à mon développement. Ce n'est pas toujours facile l'apprentissage par soi-même mais heureusement que vous êtes là.
Jocelyne
WOW! Un pas de plus dans mon apprentissage.
Je n'avais pas réalisé que la fonction elle-même était une variable. Je me
demandais comment arriver à la mettre dedans.
Donc c'est une valeur entière que vous attendez, mais un Long c'est
peut-être exagéré :)
Il me semblait aussi que ce n'était pas le bon type mais c'était le seul qui
me retournait une valeur :)
RetourneDegre = Replace(Trim(Degre), SymbDeg, "") ' retourne la valeur
Par prudence je ferais :
Dim NbDegré as string
NbDegré = Replace(Degre, SymbDeg, "")
If IsNumeric(NbDegré) then
RetourneDegre = val(nbdegré)
else
RetourneDegre = 0
debug.print "Erreur signet : " & S
endif
Pas testé.
Je l'ai testé et tout fonctionne à merveille. Juste une petite question,
est-ce je dois retirer la ligne
Degre = Replace(Trim(Degre), SymbDeg, "") de mon code? Votre code semble
enlever les espaces en même temps que le symbole de degré???
Merci encore une fois de votre généreuse participation à mon développement.
Ce n'est pas toujours facile l'apprentissage par soi-même mais heureusement
que vous êtes là.
Je n'avais pas réalisé que la fonction elle-même était une variable. Je me demandais comment arriver à la mettre dedans.
Donc c'est une valeur entière que vous attendez, mais un Long c'est peut-être exagéré :)
Il me semblait aussi que ce n'était pas le bon type mais c'était le seul qui me retournait une valeur :)
RetourneDegre = Replace(Trim(Degre), SymbDeg, "") ' retourne la valeur
Par prudence je ferais : Dim NbDegré as string NbDegré = Replace(Degre, SymbDeg, "") If IsNumeric(NbDegré) then RetourneDegre = val(nbdegré) else RetourneDegre = 0 debug.print "Erreur signet : " & S endif
Pas testé.
Je l'ai testé et tout fonctionne à merveille. Juste une petite question, est-ce je dois retirer la ligne Degre = Replace(Trim(Degre), SymbDeg, "") de mon code? Votre code semble enlever les espaces en même temps que le symbole de degré???
Merci encore une fois de votre généreuse participation à mon développement. Ce n'est pas toujours facile l'apprentissage par soi-même mais heureusement que vous êtes là.
Jocelyne
Geo
Bonjour
est-ce je dois retirer la ligne Degre = Replace(Trim(Degre), SymbDeg, "") de mon code?
Oui, c'est la même chose. En fait j'ai enlevé le Trim car vba n'en tiendra pas compte en convertissant le texte numérique en valeur numérique. La fonction val est ici inutile, mais je trouve qu'elle permet d'attirer l'attention sur le fait qu'on passe de caractères vers une valeur.
Merci encore une fois de votre généreuse participation à mon développement. Ce n'est pas toujours facile l'apprentissage par soi-même mais heureusement que vous êtes là.
J'ai appris comme ça aussi, c'est un juste retour des choses.
Bonne continuation.
-- A+
Bonjour
est-ce je dois retirer la ligne
Degre = Replace(Trim(Degre), SymbDeg, "") de mon code?
Oui, c'est la même chose.
En fait j'ai enlevé le Trim car vba n'en tiendra pas compte en
convertissant le texte numérique en valeur numérique.
La fonction val est ici inutile, mais je trouve qu'elle permet
d'attirer l'attention sur le fait qu'on passe de caractères vers une
valeur.
Merci encore une fois de votre généreuse participation à mon développement. Ce n'est
pas toujours facile l'apprentissage par soi-même mais heureusement que vous êtes là.
J'ai appris comme ça aussi, c'est un juste retour des choses.
est-ce je dois retirer la ligne Degre = Replace(Trim(Degre), SymbDeg, "") de mon code?
Oui, c'est la même chose. En fait j'ai enlevé le Trim car vba n'en tiendra pas compte en convertissant le texte numérique en valeur numérique. La fonction val est ici inutile, mais je trouve qu'elle permet d'attirer l'attention sur le fait qu'on passe de caractères vers une valeur.
Merci encore une fois de votre généreuse participation à mon développement. Ce n'est pas toujours facile l'apprentissage par soi-même mais heureusement que vous êtes là.
J'ai appris comme ça aussi, c'est un juste retour des choses.