Macro, problème format pour formules

DanielR1971

XLDnaute Nouveau
Bonjour,

J'ai créé une macro pour la mise en page de ma base de données dont les éléments sont extraits de SAP.

Dans ma macro, j'indique qu'il faut ajouter une colonne en "B". Dans cette colonne je désire écrire une formule SI pour déterminer des critères de tri en fonction des données de la colonne de référence "A".

La formule que j'ai écrite est : =SI(A1="";"";SI(A1="n/a";"N";"O"))

Dans la macro, je copie cette formule et la colle de la cellule "B3 : "B8000".

Lorsque je lance la macro, le calcul ne se fait pas, seul la formule est affichée, c'est comme si la colonne était en format texte.

Dès lors, j'ajoute dans ma macro la conversion de la colonne "B" en format standard (donnée, convertir, etc..). Malheureusement cela ne marche pas.:eek:

Voici une partie de la macro en question, je copie uniquement ce qui est utile pour l'analyse du problème.

Columns("B:B").Select
Selection.TextToColumns Destination:=Columns("B:B"), DataType:=xlDelimited, _
TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=True, Semicolon _
:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, _
1), TrailingMinusNumbers:=True
Range("B2").Select
ActiveCell.FormulaR1C1 = "=si(A2="""";"""";si(A2=""n/a"";""N"";""O""))"
Range("B2").Select
Selection.Copy
Range("B3:B4806").Select
ActiveSheet.Paste
End Sub

Si quelqu'un pouvait m'aider ou éclairer ma lanterne ce serait bien sympa.

Bien cordialement,

Daniel
 

gilbert_RGI

XLDnaute Barbatruc
Re : Macro, problème format pour formules

Bonjour,

J'ai créé une macro pour la mise en page de ma base de données dont les éléments sont extraits de SAP.

Dans ma macro, j'indique qu'il faut ajouter une colonne en "B". Dans cette colonne je désire écrire une formule SI pour déterminer des critères de tri en fonction des données de la colonne de référence "A".

La formule que j'ai écrite est : =SI(A1="";"";SI(A1="n/a";"N";"O"))

Dans la macro, je copie cette formule et la colle de la cellule "B3 : "B8000".

Lorsque je lance la macro, le calcul ne se fait pas, seul la formule est affichée, c'est comme si la colonne était en format texte.

Dès lors, j'ajoute dans ma macro la conversion de la colonne "B" en format standard (donnée, convertir, etc..). Malheureusement cela ne marche pas.:eek:

Voici une partie de la macro en question, je copie uniquement ce qui est utile pour l'analyse du problème.

Columns("B:B").Select
Selection.TextToColumns Destination:=Columns("B:B"), DataType:=xlDelimited, _
TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=True, Semicolon _
:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, _
1), TrailingMinusNumbers:=True
Range("B2").Select
ActiveCell.FormulaR1C1 = "=si(A2="""";"""";si(A2=""n/a"";""N"";""O""))"
Range("B2").Select
Selection.Copy
Range("B3:B4806").Select
ActiveSheet.Paste
End Sub

Si quelqu'un pouvait m'aider ou éclairer ma lanterne ce serait bien sympa.

Bien cordialement,

Daniel


bonjour

remplacer la formule par celle ci

ActiveCell.FormulaR1C1 = "=IF(R[-1]C[-1]="""","""",IF(R[-1]C[-1]=""n/a"",""N"",""O""))"

Salutations

RGI
 

DanielR1971

XLDnaute Nouveau
Re : Macro, problème format pour formules

Ok merci,

Après avoir testé, cela ne fait pas de différence. que ce soit en francais ou en anglais. Et j'ai repris la formule de Gilbert.

le problème c'est comme si la colonne B était du texte, car si je fais la conversion en passant par : Donnée \ Convertir \ etc.. ça fonctionne.

Et si je retranscript ceci dans ma macro cela ne marche pas non plus.

Etrange.

D'autres idées?

Bien cordialement,
 

Spitnolan08

XLDnaute Barbatruc
Re : Macro, problème format pour formules

Bonjour,

Eh bien dans ce cas applique un format nombre ou standard à ta colonne avant d'y inscrire ta formule,; Ca ne marche pas ?
Nota : je ne peux tester ton code car il ne fonctionne pas du tout chez moi...

Cordialement
 

DanielR1971

XLDnaute Nouveau
Re : Macro, problème format pour formules

Malheureusement cela ne marche toujours pas, je vais revoir le tout demain à tête reposée en prenant un peu de recul sur la M.... que j'ai construite.

Merci pour vos remarques.

Juste encore une dernière question.

on est bien d'accord que lorsque j'insère une colonne celle-ci est en format texte ! Dans le cadre de la macro il faut la convertir au format standard avant d'écrire ma formule! et je peux passer par donnée convertir etc... Right?

Thank you guys for your help.

All the best.

Daniel
 

gilbert_RGI

XLDnaute Barbatruc
Re : Macro, problème format pour formules

Ok que faut-il écrire pour que cela se réfère à une seule colonne?

bonjour
Code:
Columns("B:B").Select
Selection.TextToColumns Destination:=Columns("B:B"), DataType:=xlDelimited, _
TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=True, Semicolon _
:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, _
1), TrailingMinusNumbers:=True
est-ce bien utile ?

à quoi cela vous sert-il ?

Cordialement

RGI
 

DanielR1971

XLDnaute Nouveau
Re : Macro, problème format pour formules

Bonjour,

C'est simple, lorsque je download ma base de donnée SAP sur Excel, les champs sont au format texte. Donc si j'insère une colonne celle-ci est au format texte. Comme dans ces cellules je désire effectuer un calcul de condition, le résultat ne s'affiche pas puisque c'est du texte. Pour avoir le résultat je dois convertir au format standard.

That's the question!

All the best and thank you for your help.
 

gilbert_RGI

XLDnaute Barbatruc
Re : Macro, problème format pour formules

Bonjour,

C'est simple, lorsque je download ma base de donnée SAP sur Excel, les champs sont au format texte. Donc si j'insère une colonne celle-ci est au format texte. Comme dans ces cellules je désire effectuer un calcul de condition, le résultat ne s'affiche pas puisque c'est du texte. Pour avoir le résultat je dois convertir au format standard.

That's the question!

All the best and thank you for your help.

donc à la suite de votre report mettre ce code

Code:
Selection.NumberFormat = "General"

ce qui doit donner

Columns("B:B").Select
Selection.TextToColumns Destination:=Columns("B:B"), DataType:=xlDelimited, _
TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=True, Semicolon _
:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, _
1), TrailingMinusNumbers:=True
Selection.NumberFormat = "General"
Range("B2").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C[-1]="""","""",IF(R[-1]C[-1]=""n/a"",""N"",""O""))"
Range("B2").Select
Selection.Copy
Range("B3:B4806").Select
ActiveSheet.Paste
End Sub
 

DanielR1971

XLDnaute Nouveau
Re : Macro, problème format pour formules

donc à la suite de votre report mettre ce code

Code:
Selection.NumberFormat = "General"

ce qui doit donner

Columns("B:B").Select
Selection.TextToColumns Destination:=Columns("B:B"), DataType:=xlDelimited, _
TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=True, Semicolon _
:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, _
1), TrailingMinusNumbers:=True
Selection.NumberFormat = "General"
Range("B2").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C[-1]="""","""",IF(R[-1]C[-1]=""n/a"",""N"",""O""))"
Range("B2").Select
Selection.Copy
Range("B3:B4806").Select
ActiveSheet.Paste
End Sub

Step by step, it sounds like famous song. Doesn't it?

Merci gilbert c'est simplement génial cela fonctionne presque parfaitement. Juste un détail pour que je comprenne bien la chose.

A mon avis, ce blabla ne sert à rien
Columns("B:B").Select
Selection.TextToColumns Destination:=Range("B:B"), DataType:=xlDelimited, _
TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=True, Semicolon _
:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, _
1), TrailingMinusNumbers:=True

Exact?

Je peux directement mettre :
Columns("B:B").Select
Selection.NumberFormat = "General"

Exact?

Peux-tu me dire à quoi correspond ceci?
Range("B2").Select
ActiveCell.FormulaR1C1

Est-ce B2?

L'élément rechercher par ceci
Range("B2").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C[-1]

est bien A1

Comme je dédire rechercher à A2 je tappe donc
Range("B2").Select
ActiveCell.FormulaR1C1 = "=IF(R[1]C[-1]

J'effectue ces modifications et lance le test.

Mais je pense tenir le bon bout.

Cordialement
Daniel R
 

DanielR1971

XLDnaute Nouveau
Re : Macro, problème format pour formules

Bingo YAhooooo pour ne pas faire de pub,

Merci à tous ceux qui ont contribué à la résolution de ce rébus. Je suis hyper content et je réalise mon rêve faire ma première macro. C'est en quelque sort un petit pas pour l'humanité mais un pas de géant pour mes connaissances en Excel.

Voici la macro complète. Bonne lecture :cool:

Columns("B:B").Select
Selection.Insert Shift:=xlToRight
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(6, 1)), TrailingMinusNumbers:=True
Columns("B:B").Select
Selection.ClearContents
Columns("D:D").Select
Selection.Insert Shift:=xlToRight
Columns("C:C").Select
Selection.TextToColumns Destination:=Range("C1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(4, 1)), TrailingMinusNumbers:=True
Columns("C:C").Select
Selection.Delete Shift:=xlToLeft
Columns("E:E").Select
Selection.Insert Shift:=xlToRight
Columns("D:D").Select
Selection.TextToColumns Destination:=Range("D1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(15, 1)), TrailingMinusNumbers:=True
Columns("H:H").Select
Selection.Insert Shift:=xlToRight
Columns("G:G").Select
Selection.TextToColumns Destination:=Range("G1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(8, 1)), TrailingMinusNumbers:=True
Columns("H:H").Select
Selection.Delete Shift:=xlToLeft
Columns("I:I").Select
Selection.Insert Shift:=xlToRight
Columns("H:H").Select
Selection.TextToColumns Destination:=Range("H1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(11, 1)), TrailingMinusNumbers:=True
Columns("M:N").Select
Selection.Delete Shift:=xlToLeft
Columns("N:O").Select
Selection.Delete Shift:=xlToLeft
Rows("1:2").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
ActiveCell.FormulaR1C1 = "N° IC"
Range("B1").Select
ActiveCell.FormulaR1C1 = "IC "
Range("C1").Select
ActiveCell.FormulaR1C1 = "Groupe March"
Range("D1").Select
ActiveCell.FormulaR1C1 = "N° Article"
Range("E1").Select
ActiveCell.FormulaR1C1 = "Dés Article"
Range("F1").Select
ActiveCell.FormulaR1C1 = "N° Cde"
Range("G1").Select
ActiveCell.FormulaR1C1 = "Période"
Range("H1").Select
ActiveCell.FormulaR1C1 = "N° Clt"
Range("I1").Select
ActiveCell.FormulaR1C1 = "Dés Client"
Range("J1").Select
ActiveCell.FormulaR1C1 = "Qté vte"
Range("K1").Select
ActiveCell.FormulaR1C1 = "Qté Grat."
Range("L1").Select
ActiveCell.FormulaR1C1 = "CA / MCSI"
Range("M1").Select
ActiveCell.FormulaR1C1 = "PR Cession"
Cells.EntireColumn.AutoFit
Columns("A:A").Select
Selection.Replace What:="non af", Replacement:="n/a", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Columns("B:B").Select
Selection.NumberFormat = "General"

Range("B2").Select
ActiveCell.FormulaR1C1 = "=IF(R[0]C[-1]="""","""",IF(R[0]C[-1]=""n/a"",""N"",""O""))"
Range("B2").Select
Selection.Copy
Range("B3:B9999").Select
ActiveSheet.Paste
End Sub

Encore moulte mercis.

Ciao et à la prochaine

Bien cordialement.

Daniel R.
 

Discussions similaires

Réponses
3
Affichages
226

Statistiques des forums

Discussions
312 086
Messages
2 085 197
Membres
102 814
dernier inscrit
JLGalley