OVH Cloud OVH Cloud

quelle instruction si Active.cell type = fonction ?

3 réponses
Avatar
Jean-Paul V
Bonjour à tous

1 ) Par quelle instruction puis-je savoir si dans Active.cell j'ai une
fonction ? ceci afin de ne pas la tuer par ma Macro qui change les libellés
et les numériques en numérique

2 ) La macro à modifiée est :

Sub Valeur()
If ActiveCell.Value > " " And ActiveCell.Value < " zz" Then ' ainsi la
macro ne se plante pas sur un libellé
Exit Sub
Else
If ActiveCell.Value > "a" Then 'ne se plante pas sur un vrai libellé
Exit Sub
Else
If ActiveCell.Value = " " Then ' ne s'arrête pas si nous avons un blanc dans
la colonne copiée
ActiveCell.Value = 0
Selection.NumberFormat = "#,##0.00"
ActiveCell.Offset(1, 0).Select
Valeur
Else
If ActiveCell.Value <> 0 Then
ActiveCell.Value = conversion(ActiveCell.Value)
Selection.NumberFormat = "#,##0.00"
ActiveCell.Offset(1, 0).Select
Valeur
Else
Exit Sub
End If
End If
End If
End If
End Sub

Cette macro fait la conversion des copies partielle d'écran As400 en vraies
valeurs dans excel .
exemple copie écran :
16,79CR
1.089,86
<---- ici on récupère un blanc
1.089,86-

La fonction conversion est :

'--------------
Function conversion(v As Variant) As Double
If IsNumeric(v) Then
conversion = v
Else
v = Replace(v, ".", "")
If Right(v, 1) = "-" Then
conversion = -CDbl(Left(v, Len(v) - 1))
ElseIf Right(v, 2) = "CR" Then
conversion = -CDbl(Left(v, Len(v) - 2))
Else
conversion = CDbl(v)
End If
End If
End Function
'----------------

@+

3 réponses

Avatar
Ardus Petus
if activecell.hasFormula then
<c'est une formule>
else
<ce n'est pas une formule>
endif

Cordialement,

AP

PS: tu es apparenté aux II ?

"Jean-Paul V" a écrit dans le message
de news:
Bonjour à tous

1 ) Par quelle instruction puis-je savoir si dans Active.cell j'ai une
fonction ? ceci afin de ne pas la tuer par ma Macro qui change les
libellés

et les numériques en numérique

2 ) La macro à modifiée est :

Sub Valeur()
If ActiveCell.Value > " " And ActiveCell.Value < " zz" Then ' ainsi la
macro ne se plante pas sur un libellé
Exit Sub
Else
If ActiveCell.Value > "a" Then 'ne se plante pas sur un vrai libellé
Exit Sub
Else
If ActiveCell.Value = " " Then ' ne s'arrête pas si nous avons un blanc
dans

la colonne copiée
ActiveCell.Value = 0
Selection.NumberFormat = "#,##0.00"
ActiveCell.Offset(1, 0).Select
Valeur
Else
If ActiveCell.Value <> 0 Then
ActiveCell.Value = conversion(ActiveCell.Value)
Selection.NumberFormat = "#,##0.00"
ActiveCell.Offset(1, 0).Select
Valeur
Else
Exit Sub
End If
End If
End If
End If
End Sub

Cette macro fait la conversion des copies partielle d'écran As400 en
vraies

valeurs dans excel .
exemple copie écran :
16,79CR
1.089,86
<---- ici on récupère un blanc
1.089,86-

La fonction conversion est :

'--------------
Function conversion(v As Variant) As Double
If IsNumeric(v) Then
conversion = v
Else
v = Replace(v, ".", "")
If Right(v, 1) = "-" Then
conversion = -CDbl(Left(v, Len(v) - 1))
ElseIf Right(v, 2) = "CR" Then
conversion = -CDbl(Left(v, Len(v) - 2))
Else
conversion = CDbl(v)
End If
End If
End Function
'----------------

@+



Avatar
Jean-Paul V
Bonjour

Merci ça marche en regardant de + près ta conversion j'ai vu un ElseIf qui
devrait m'économiser un ou plusieurs End If .

Que veut dire CDbl dans ta macro ?

PS Je ne suis pas de la famille II , V n'est pas le chiffre romain mais le
V de la Victoire , de + malgrè ta conversion j'ai perdu la foi , j'ai essayé
de relire le pari de Pascal rien n'y fait , la Pietà de Michel-Ange à
Saint-Pierre revue sur ARTE y parvient presque !

Cordialement
Jean-Paul




if activecell.hasFormula then
<c'est une formule>
else
<ce n'est pas une formule>
endif

Cordialement,

AP

PS: tu es apparenté aux II ?

"Jean-Paul V" a écrit dans le message
de news:
Bonjour à tous

1 ) Par quelle instruction puis-je savoir si dans Active.cell j'ai une
fonction ? ceci afin de ne pas la tuer par ma Macro qui change les
libellés

et les numériques en numérique

2 ) La macro à modifiée est :

Sub Valeur()
If ActiveCell.Value > " " And ActiveCell.Value < " zz" Then ' ainsi la
macro ne se plante pas sur un libellé
Exit Sub
Else
If ActiveCell.Value > "a" Then 'ne se plante pas sur un vrai libellé
Exit Sub
Else
If ActiveCell.Value = " " Then ' ne s'arrête pas si nous avons un blanc
dans

la colonne copiée
ActiveCell.Value = 0
Selection.NumberFormat = "#,##0.00"
ActiveCell.Offset(1, 0).Select
Valeur
Else
If ActiveCell.Value <> 0 Then
ActiveCell.Value = conversion(ActiveCell.Value)
Selection.NumberFormat = "#,##0.00"
ActiveCell.Offset(1, 0).Select
Valeur
Else
Exit Sub
End If
End If
End If
End If
End Sub

Cette macro fait la conversion des copies partielle d'écran As400 en
vraies

valeurs dans excel .
exemple copie écran :
16,79CR
1.089,86
<---- ici on récupère un blanc
1.089,86-

La fonction conversion est :

'--------------
Function conversion(v As Variant) As Double
If IsNumeric(v) Then
conversion = v
Else
v = Replace(v, ".", "")
If Right(v, 1) = "-" Then
conversion = -CDbl(Left(v, Len(v) - 1))
ElseIf Right(v, 2) = "CR" Then
conversion = -CDbl(Left(v, Len(v) - 2))
Else
conversion = CDbl(v)
End If
End If
End Function
'----------------

@+








Avatar
Clément Marcotte
Bonjour,

Que veut dire CDbl dans ta macro ?


C'est une fonction de conversion. Il s'agit de prendre une donnée qui a au
moins l'air d'un nombre et de la convertir en nombre à virgule flottante à
précision étendue. (Double précision en anglais ==> environ 16 chiffres
significatifs.)