Bonjour à tous,
Après être aller faire un tour sur le site de FS, pour
adapter une macro 2000 pour excel97 avec la fonction
Split, mes connaissances limitées en vba m'empèchent de la
faire fonctionner.....
Ci joint la macro, qui récupère en A toutes les données
dans la col A, séparées par un "-", puis les incrémente
dans une fonction Sommeprod.
Merci pour votre aide précieuse,
François
Function SplitFor97(sStr As String, sdelim As String) As
Variant
SplitFor97 = Evaluate("{""" & _
Application.Substitute(sStr, sdelim, """,""") &
"""}")
End Function
Sub InventPosMonth()
For Each cel In [A30:A35]
For Each txt In cel
X = SplitFor97(txt, "-")
For i = 0 To UBound(X)
If Len(X(i)) = 3 Then
laFormule = laFormule & "(left(ComptesG,3)=" &
"""" & X(i) & """" & ")+"
ElseIf Len(X(i)) = 8 Then
laFormule = laFormule & "(ComptesG=" & """" & X
(i) & """" & ")+"
End If
Next i
Next txt
On Error Resume Next
Cells(cel.Row, 9) = "=sumproduct((" & Left(laFormule, Len
(laFormule) - 1) & ")*Solde)"
laFormule = ""
Next cel
For Each cel In [A46:A50]
For Each txt In cel
X = Split(txt, "-")
For i = 0 To UBound(X)
If Len(X(i)) = 3 Then
laFormule = laFormule & "(left(ComptesG,3)=" &
"""" & X(i) & """" & ")+"
ElseIf Len(X(i)) = 8 Then
laFormule = laFormule & "(ComptesG=" & """" & X
(i) & """" & ")+"
End If
Next i
Next txt
On Error Resume Next
Cells(cel.Row, 7) = "=sumproduct((" & Left(laFormule, Len
(laFormule) - 1) & ")*Solde)"
laFormule = ""
Next cel
End Sub
Bonjour à tous,
Après être aller faire un tour sur le site de FS, pour
adapter une macro 2000 pour excel97 avec la fonction
Split, mes connaissances limitées en vba m'empèchent de la
faire fonctionner.....
Ci joint la macro, qui récupère en A toutes les données
dans la col A, séparées par un "-", puis les incrémente
dans une fonction Sommeprod.
Merci pour votre aide précieuse,
François
Function SplitFor97(sStr As String, sdelim As String) As
Variant
SplitFor97 = Evaluate("{""" & _
Application.Substitute(sStr, sdelim, """,""") &
"""}")
End Function
Sub InventPosMonth()
For Each cel In [A30:A35]
For Each txt In cel
X = SplitFor97(txt, "-")
For i = 0 To UBound(X)
If Len(X(i)) = 3 Then
laFormule = laFormule & "(left(ComptesG,3)=" &
"""" & X(i) & """" & ")+"
ElseIf Len(X(i)) = 8 Then
laFormule = laFormule & "(ComptesG=" & """" & X
(i) & """" & ")+"
End If
Next i
Next txt
On Error Resume Next
Cells(cel.Row, 9) = "=sumproduct((" & Left(laFormule, Len
(laFormule) - 1) & ")*Solde)"
laFormule = ""
Next cel
For Each cel In [A46:A50]
For Each txt In cel
X = Split(txt, "-")
For i = 0 To UBound(X)
If Len(X(i)) = 3 Then
laFormule = laFormule & "(left(ComptesG,3)=" &
"""" & X(i) & """" & ")+"
ElseIf Len(X(i)) = 8 Then
laFormule = laFormule & "(ComptesG=" & """" & X
(i) & """" & ")+"
End If
Next i
Next txt
On Error Resume Next
Cells(cel.Row, 7) = "=sumproduct((" & Left(laFormule, Len
(laFormule) - 1) & ")*Solde)"
laFormule = ""
Next cel
End Sub
Bonjour à tous,
Après être aller faire un tour sur le site de FS, pour
adapter une macro 2000 pour excel97 avec la fonction
Split, mes connaissances limitées en vba m'empèchent de la
faire fonctionner.....
Ci joint la macro, qui récupère en A toutes les données
dans la col A, séparées par un "-", puis les incrémente
dans une fonction Sommeprod.
Merci pour votre aide précieuse,
François
Function SplitFor97(sStr As String, sdelim As String) As
Variant
SplitFor97 = Evaluate("{""" & _
Application.Substitute(sStr, sdelim, """,""") &
"""}")
End Function
Sub InventPosMonth()
For Each cel In [A30:A35]
For Each txt In cel
X = SplitFor97(txt, "-")
For i = 0 To UBound(X)
If Len(X(i)) = 3 Then
laFormule = laFormule & "(left(ComptesG,3)=" &
"""" & X(i) & """" & ")+"
ElseIf Len(X(i)) = 8 Then
laFormule = laFormule & "(ComptesG=" & """" & X
(i) & """" & ")+"
End If
Next i
Next txt
On Error Resume Next
Cells(cel.Row, 9) = "=sumproduct((" & Left(laFormule, Len
(laFormule) - 1) & ")*Solde)"
laFormule = ""
Next cel
For Each cel In [A46:A50]
For Each txt In cel
X = Split(txt, "-")
For i = 0 To UBound(X)
If Len(X(i)) = 3 Then
laFormule = laFormule & "(left(ComptesG,3)=" &
"""" & X(i) & """" & ")+"
ElseIf Len(X(i)) = 8 Then
laFormule = laFormule & "(ComptesG=" & """" & X
(i) & """" & ")+"
End If
Next i
Next txt
On Error Resume Next
Cells(cel.Row, 7) = "=sumproduct((" & Left(laFormule, Len
(laFormule) - 1) & ")*Solde)"
laFormule = ""
Next cel
End Sub
Bonjour à tous,
Après être aller faire un tour sur le site de FS, pour
adapter une macro 2000 pour excel97 avec la fonction
Split, mes connaissances limitées en vba m'empèchent de la
faire fonctionner.....
Ci joint la macro, qui récupère en A toutes les données
dans la col A, séparées par un "-", puis les incrémente
dans une fonction Sommeprod.
Merci pour votre aide précieuse,
François
Function SplitFor97(sStr As String, sdelim As String) As
Variant
SplitFor97 = Evaluate("{""" & _
Application.Substitute(sStr, sdelim, """,""") &
"""}")
End Function
Sub InventPosMonth()
For Each cel In [A30:A35]
For Each txt In cel
X = SplitFor97(txt, "-")
For i = 0 To UBound(X)
If Len(X(i)) = 3 Then
laFormule = laFormule & "(left(ComptesG,3)=" &
"""" & X(i) & """" & ")+"
ElseIf Len(X(i)) = 8 Then
laFormule = laFormule & "(ComptesG=" & """" & X
(i) & """" & ")+"
End If
Next i
Next txt
On Error Resume Next
Cells(cel.Row, 9) = "=sumproduct((" & Left(laFormule, Len
(laFormule) - 1) & ")*Solde)"
laFormule = ""
Next cel
For Each cel In [A46:A50]
For Each txt In cel
X = Split(txt, "-")
For i = 0 To UBound(X)
If Len(X(i)) = 3 Then
laFormule = laFormule & "(left(ComptesG,3)=" &
"""" & X(i) & """" & ")+"
ElseIf Len(X(i)) = 8 Then
laFormule = laFormule & "(ComptesG=" & """" & X
(i) & """" & ")+"
End If
Next i
Next txt
On Error Resume Next
Cells(cel.Row, 7) = "=sumproduct((" & Left(laFormule, Len
(laFormule) - 1) & ")*Solde)"
laFormule = ""
Next cel
End Sub
Bonjour à tous,
Après être aller faire un tour sur le site de FS, pour
adapter une macro 2000 pour excel97 avec la fonction
Split, mes connaissances limitées en vba m'empèchent de la
faire fonctionner.....
Ci joint la macro, qui récupère en A toutes les données
dans la col A, séparées par un "-", puis les incrémente
dans une fonction Sommeprod.
Merci pour votre aide précieuse,
François
Function SplitFor97(sStr As String, sdelim As String) As
Variant
SplitFor97 = Evaluate("{""" & _
Application.Substitute(sStr, sdelim, """,""") &
"""}")
End Function
Sub InventPosMonth()
For Each cel In [A30:A35]
For Each txt In cel
X = SplitFor97(txt, "-")
For i = 0 To UBound(X)
If Len(X(i)) = 3 Then
laFormule = laFormule & "(left(ComptesG,3)=" &
"""" & X(i) & """" & ")+"
ElseIf Len(X(i)) = 8 Then
laFormule = laFormule & "(ComptesG=" & """" & X
(i) & """" & ")+"
End If
Next i
Next txt
On Error Resume Next
Cells(cel.Row, 9) = "=sumproduct((" & Left(laFormule, Len
(laFormule) - 1) & ")*Solde)"
laFormule = ""
Next cel
For Each cel In [A46:A50]
For Each txt In cel
X = Split(txt, "-")
For i = 0 To UBound(X)
If Len(X(i)) = 3 Then
laFormule = laFormule & "(left(ComptesG,3)=" &
"""" & X(i) & """" & ")+"
ElseIf Len(X(i)) = 8 Then
laFormule = laFormule & "(ComptesG=" & """" & X
(i) & """" & ")+"
End If
Next i
Next txt
On Error Resume Next
Cells(cel.Row, 7) = "=sumproduct((" & Left(laFormule, Len
(laFormule) - 1) & ")*Solde)"
laFormule = ""
Next cel
End Sub
Bonjour à tous,
Après être aller faire un tour sur le site de FS, pour
adapter une macro 2000 pour excel97 avec la fonction
Split, mes connaissances limitées en vba m'empèchent de la
faire fonctionner.....
Ci joint la macro, qui récupère en A toutes les données
dans la col A, séparées par un "-", puis les incrémente
dans une fonction Sommeprod.
Merci pour votre aide précieuse,
François
Function SplitFor97(sStr As String, sdelim As String) As
Variant
SplitFor97 = Evaluate("{""" & _
Application.Substitute(sStr, sdelim, """,""") &
"""}")
End Function
Sub InventPosMonth()
For Each cel In [A30:A35]
For Each txt In cel
X = SplitFor97(txt, "-")
For i = 0 To UBound(X)
If Len(X(i)) = 3 Then
laFormule = laFormule & "(left(ComptesG,3)=" &
"""" & X(i) & """" & ")+"
ElseIf Len(X(i)) = 8 Then
laFormule = laFormule & "(ComptesG=" & """" & X
(i) & """" & ")+"
End If
Next i
Next txt
On Error Resume Next
Cells(cel.Row, 9) = "=sumproduct((" & Left(laFormule, Len
(laFormule) - 1) & ")*Solde)"
laFormule = ""
Next cel
For Each cel In [A46:A50]
For Each txt In cel
X = Split(txt, "-")
For i = 0 To UBound(X)
If Len(X(i)) = 3 Then
laFormule = laFormule & "(left(ComptesG,3)=" &
"""" & X(i) & """" & ")+"
ElseIf Len(X(i)) = 8 Then
laFormule = laFormule & "(ComptesG=" & """" & X
(i) & """" & ")+"
End If
Next i
Next txt
On Error Resume Next
Cells(cel.Row, 7) = "=sumproduct((" & Left(laFormule, Len
(laFormule) - 1) & ")*Solde)"
laFormule = ""
Next cel
End Sub
Le paramètre "sStr" de la fonction a comme type : "String"
Et l'ami François dans sa procédure tente de lui passer un "objet range" plutôt qu'une variable String.
La ligne de code est : For Each txt In cel
X = SplitFor97(txt, "-")
Et c'est pour ça qu'il obtient ce message d'erreur :
"Erreur de compilarion - type d'argument ByRef incompatible"
[re-snip]
Le paramètre "sStr" de la fonction a comme type : "String"
Et l'ami François dans sa procédure tente de lui passer un "objet range" plutôt qu'une variable String.
La ligne de code est : For Each txt In cel
X = SplitFor97(txt, "-")
Et c'est pour ça qu'il obtient ce message d'erreur :
"Erreur de compilarion - type d'argument ByRef incompatible"
[re-snip]
Le paramètre "sStr" de la fonction a comme type : "String"
Et l'ami François dans sa procédure tente de lui passer un "objet range" plutôt qu'une variable String.
La ligne de code est : For Each txt In cel
X = SplitFor97(txt, "-")
Et c'est pour ça qu'il obtient ce message d'erreur :
"Erreur de compilarion - type d'argument ByRef incompatible"
[re-snip]
Le paramètre "sStr" de la fonction a comme type : "String"
Et l'ami François dans sa procédure tente de lui passer un "objet range" plutôt qu'une variable String.
La ligne de code est : For Each txt In cel
X = SplitFor97(txt, "-")
Et c'est pour ça qu'il obtient ce message d'erreur :
"Erreur de compilarion - type d'argument ByRef incompatible"
[re-snip]
Le paramètre "sStr" de la fonction a comme type : "String"
Et l'ami François dans sa procédure tente de lui passer un "objet range" plutôt qu'une variable String.
La ligne de code est : For Each txt In cel
X = SplitFor97(txt, "-")
Et c'est pour ça qu'il obtient ce message d'erreur :
"Erreur de compilarion - type d'argument ByRef incompatible"
[re-snip]
Le paramètre "sStr" de la fonction a comme type : "String"
Et l'ami François dans sa procédure tente de lui passer un "objet range" plutôt qu'une variable String.
La ligne de code est : For Each txt In cel
X = SplitFor97(txt, "-")
Et c'est pour ça qu'il obtient ce message d'erreur :
"Erreur de compilarion - type d'argument ByRef incompatible"
[re-snip]
Bonsoir Frédéric,
Essaie ceci : Même si la variable txt est déclaré comme un "range" cela provoque quand même le même type d'erreur que
François a décelé !
Pour éviter l'erreur, il aurait dû écrire : For Each txt.text In Range("A1:A5")... ce que mes explications tentaient de
démontrer...
'-------------------
Function SplitFor97(sStr As String, sdelim As String) As Variant
SplitFor97 = Evaluate("{""" & _
Application.Substitute(sStr, sdelim, """,""") & """}")
End Function
'-------------------
Sub LaBoucle()
Dim txt As Range
For Each txt In Range("A1:A5")
X = SplitFor97(txt, "-")
Next
End Sub
'-------------------
Salutations!
"Frédéric Sigonneau" a écrit dans le message de news:
Bonsoir Denis,
[snip]Le paramètre "sStr" de la fonction a comme type : "String"
Et l'ami François dans sa procédure tente de lui passer un "objet range" plutôt qu'une variable String.
La ligne de code est : For Each txt In cel
X = SplitFor97(txt, "-")
Et c'est pour ça qu'il obtient ce message d'erreur :
"Erreur de compilarion - type d'argument ByRef incompatible"
[re-snip]
Je dirais plutôt que "l'ami François", au vu du code qui nous a été transmis,
essaye de passer un paramètre (txt) dont le type n'est pas déclaré, ce qui
revient à le déclarer implicitement en Variant, alors que la fonction attend
explicitement un String, comme tu le notes justement. C'est, AMA, ce qui
provoque ce message d'erreur et dans ce cas, il suffit de déclarer txt en String
pour calmer la fureur du 'compilateur'.
A cela s'ajoute peut-être le fait que cette boucle For Each txt etc. n'est pas
forcément indispensable pour ce qu'il essaye de faire. A mon avis, il pourrait
suffire, après avoir déclaré la variable cel en Range, de boucler sur les seules
cellules :
For Each cel In [A30:A35]
X = SplitFor97(cel.Text, "-")
La propriété Text des cellules renvoyant une chaine de caractères, le paramètre
passé à la fonction SplitFor97 sera du type attendu, donc, normalement, pas
d'erreur...
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir Frédéric,
Essaie ceci : Même si la variable txt est déclaré comme un "range" cela provoque quand même le même type d'erreur que
François a décelé !
Pour éviter l'erreur, il aurait dû écrire : For Each txt.text In Range("A1:A5")... ce que mes explications tentaient de
démontrer...
'-------------------
Function SplitFor97(sStr As String, sdelim As String) As Variant
SplitFor97 = Evaluate("{""" & _
Application.Substitute(sStr, sdelim, """,""") & """}")
End Function
'-------------------
Sub LaBoucle()
Dim txt As Range
For Each txt In Range("A1:A5")
X = SplitFor97(txt, "-")
Next
End Sub
'-------------------
Salutations!
"Frédéric Sigonneau" <frederic.sigonneau@wanadoo.fr> a écrit dans le message de news:3FBBDA11.5CACAFB3@wanadoo.fr...
Bonsoir Denis,
[snip]
Le paramètre "sStr" de la fonction a comme type : "String"
Et l'ami François dans sa procédure tente de lui passer un "objet range" plutôt qu'une variable String.
La ligne de code est : For Each txt In cel
X = SplitFor97(txt, "-")
Et c'est pour ça qu'il obtient ce message d'erreur :
"Erreur de compilarion - type d'argument ByRef incompatible"
[re-snip]
Je dirais plutôt que "l'ami François", au vu du code qui nous a été transmis,
essaye de passer un paramètre (txt) dont le type n'est pas déclaré, ce qui
revient à le déclarer implicitement en Variant, alors que la fonction attend
explicitement un String, comme tu le notes justement. C'est, AMA, ce qui
provoque ce message d'erreur et dans ce cas, il suffit de déclarer txt en String
pour calmer la fureur du 'compilateur'.
A cela s'ajoute peut-être le fait que cette boucle For Each txt etc. n'est pas
forcément indispensable pour ce qu'il essaye de faire. A mon avis, il pourrait
suffire, après avoir déclaré la variable cel en Range, de boucler sur les seules
cellules :
For Each cel In [A30:A35]
X = SplitFor97(cel.Text, "-")
La propriété Text des cellules renvoyant une chaine de caractères, le paramètre
passé à la fonction SplitFor97 sera du type attendu, donc, normalement, pas
d'erreur...
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir Frédéric,
Essaie ceci : Même si la variable txt est déclaré comme un "range" cela provoque quand même le même type d'erreur que
François a décelé !
Pour éviter l'erreur, il aurait dû écrire : For Each txt.text In Range("A1:A5")... ce que mes explications tentaient de
démontrer...
'-------------------
Function SplitFor97(sStr As String, sdelim As String) As Variant
SplitFor97 = Evaluate("{""" & _
Application.Substitute(sStr, sdelim, """,""") & """}")
End Function
'-------------------
Sub LaBoucle()
Dim txt As Range
For Each txt In Range("A1:A5")
X = SplitFor97(txt, "-")
Next
End Sub
'-------------------
Salutations!
"Frédéric Sigonneau" a écrit dans le message de news:
Bonsoir Denis,
[snip]Le paramètre "sStr" de la fonction a comme type : "String"
Et l'ami François dans sa procédure tente de lui passer un "objet range" plutôt qu'une variable String.
La ligne de code est : For Each txt In cel
X = SplitFor97(txt, "-")
Et c'est pour ça qu'il obtient ce message d'erreur :
"Erreur de compilarion - type d'argument ByRef incompatible"
[re-snip]
Je dirais plutôt que "l'ami François", au vu du code qui nous a été transmis,
essaye de passer un paramètre (txt) dont le type n'est pas déclaré, ce qui
revient à le déclarer implicitement en Variant, alors que la fonction attend
explicitement un String, comme tu le notes justement. C'est, AMA, ce qui
provoque ce message d'erreur et dans ce cas, il suffit de déclarer txt en String
pour calmer la fureur du 'compilateur'.
A cela s'ajoute peut-être le fait que cette boucle For Each txt etc. n'est pas
forcément indispensable pour ce qu'il essaye de faire. A mon avis, il pourrait
suffire, après avoir déclaré la variable cel en Range, de boucler sur les seules
cellules :
For Each cel In [A30:A35]
X = SplitFor97(cel.Text, "-")
La propriété Text des cellules renvoyant une chaine de caractères, le paramètre
passé à la fonction SplitFor97 sera du type attendu, donc, normalement, pas
d'erreur...
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !