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

Simplifacation

8 réponses
Avatar
pb
Bonjour,
Je sais cela beaucoup de questions en quelques jours.
Est ce que qulequ'un pourrait me dire si il y a un moyen de simplifier ce
code

Cells(2, 9).Select
ActiveCell.FormulaR1C1 =
"=IF(RC[-7]="""","""",VLOOKUP(RC[-7],Qté,7,FALSE))"
Selection.Copy
Range(Split(Range("Num").Address, ":")(1)).Activate
ActiveCell.Offset(0, -5).Select
Selection.PasteSpecial Paste:=xlPasteFormulas,
Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.Copy
Range(Selection, Selection.End(xlUp)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False


Merci
Pascal

8 réponses

Avatar
MichDenis
Tu pourrais avoir quelque chose comme :

L'utilisation de RC dans une formule est indigeste...Tu aurais
avantage à utiliser l'objet "Range" dans tes formules, c'est
beaucoup plus parlant ....Il faut apprendre à traduire ce que
donne l'enregistreur de code.

'-----------------------------------------------
Sub test()
With Cells(2, 9)
.FormulaR1C1 = "=IF(RC[-7]="""","""",VLOOKUP(RC[-7],Qté,7,FALSE))"
.Copy
End With
With Range("Num")
With .Item(.Rows.Count, .Columns.Count).Offset(0, -5)
.PasteSpecial Paste:=xlPasteFormulas, _
Operation:=xlNone
With Range(.Item(1), .Item(1).End(xlUp))
.PasteSpecial Paste:=xlPasteFormulas, _
Operation:=xlNone
End With
End With
End With
Application.CutCopyMode = False
End Sub
'-----------------------------------------------




"pb" a écrit dans le message de groupe de discussion :
#
Bonjour,
Je sais cela beaucoup de questions en quelques jours.
Est ce que qulequ'un pourrait me dire si il y a un moyen de simplifier ce
code

Cells(2, 9).Select
ActiveCell.FormulaR1C1 "=IF(RC[-7]="""","""",VLOOKUP(RC[-7],Qté,7,FALSE))"
Selection.Copy
Range(Split(Range("Num").Address, ":")(1)).Activate
ActiveCell.Offset(0, -5).Select
Selection.PasteSpecial Paste:=xlPasteFormulas,
Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse
Selection.Copy
Range(Selection, Selection.End(xlUp)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse


Merci
Pascal
Avatar
pb
Ok, Merci
Mais je plante car je suis sur que je me complique la vie dans mon code car
cette opération se répète 15 fois pour 15 critères différents.

"MichDenis" a écrit dans le message de news:

Tu pourrais avoir quelque chose comme :

L'utilisation de RC dans une formule est indigeste...Tu aurais
avantage à utiliser l'objet "Range" dans tes formules, c'est
beaucoup plus parlant ....Il faut apprendre à traduire ce que
donne l'enregistreur de code.

'-----------------------------------------------
Sub test()
With Cells(2, 9)
.FormulaR1C1 = "=IF(RC[-7]="""","""",VLOOKUP(RC[-7],Qté,7,FALSE))"
.Copy
End With
With Range("Num")
With .Item(.Rows.Count, .Columns.Count).Offset(0, -5)
.PasteSpecial Paste:=xlPasteFormulas, _
Operation:=xlNone
With Range(.Item(1), .Item(1).End(xlUp))
.PasteSpecial Paste:=xlPasteFormulas, _
Operation:=xlNone
End With
End With
End With
Application.CutCopyMode = False
End Sub
'-----------------------------------------------




"pb" a écrit dans le message de groupe de discussion :
#
Bonjour,
Je sais cela beaucoup de questions en quelques jours.
Est ce que qulequ'un pourrait me dire si il y a un moyen de simplifier ce
code

Cells(2, 9).Select
ActiveCell.FormulaR1C1 > "=IF(RC[-7]="""","""",VLOOKUP(RC[-7],Qté,7,FALSE))"
Selection.Copy
Range(Split(Range("Num").Address, ":")(1)).Activate
ActiveCell.Offset(0, -5).Select
Selection.PasteSpecial Paste:=xlPasteFormulas,
Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse
Selection.Copy
Range(Selection, Selection.End(xlUp)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse


Merci
Pascal





Avatar
MichDenis
| Mais je plante car je suis sur que je me complique la vie
| dans mon code car cette opération se répète 15 fois
| pour 15 critères différents.

Si ta question ne correspond pas à la problématique de ton application,
il ne faut pas te surprendre d'obtenir une réponse insatisfaisante !
Avatar
pb
C'est jamais ce que j'ai dis ta réponse me satisfait, mais je me posais la
question de savoirsi répété cette opération 15 fois ne compliquait et si il
n'y avait pas plus simple que Mon code.
C'est tout
"MichDenis" a écrit dans le message de news:

| Mais je plante car je suis sur que je me complique la vie
| dans mon code car cette opération se répète 15 fois
| pour 15 critères différents.

Si ta question ne correspond pas à la problématique de ton application,
il ne faut pas te surprendre d'obtenir une réponse insatisfaisante !








Avatar
MichDenis
| je me posais la question de savoirsi répété cette opération
| 15 fois ne compliquait et si il n'y avait pas plus simple
| que Mon code.

Justement comment savoir ... cette interrogation ne faisait
pas parti de ta question initiale et tu n'ajoutes aucune information
pour pouvoir infirmer ou confirmer ton expectative.
Avatar
pb
Avec:
Cells(2, 1).Select
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(INDEX(Usine,MATCH(RC41,code,0),1)),"""",(INDEX(Usine,MATCH(RC41,code,0),1)))"

J'extrait une référence produit.
Ensuite avec
Cells(2, 2).Select
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(INDEX(Libellé,MATCH(RC41,code,0),1)),"""",(INDEX(Libellé,MATCH(RC41,code,0),1)))"
Selection.Copy
Une autre donnée et ainsi de suite sur 15 col.

Je pensais qu'il y avait plus simple et q'une fois la rérrence extraite je
pouvais peut-être copier toute la ligne correspondante.
J'en suis là de mes réflexions

"MichDenis" a écrit dans le message de news:

| je me posais la question de savoirsi répété cette opération
| 15 fois ne compliquait et si il n'y avait pas plus simple
| que Mon code.

Justement comment savoir ... cette interrogation ne faisait
pas parti de ta question initiale et tu n'ajoutes aucune information
pour pouvoir infirmer ou confirmer ton expectative.






Avatar
MichDenis
'------------------------------
For a = 1 to 15

Cells(2, a).FormulaR1C1 = _
"=IF(ISERROR(INDEX(Usine,MATCH(RC41,code,0),1)),"""",(INDEX(Usine,MATCH(RC41,code,0),1)))"

Next
'------------------------------
Avatar
pb
Merci,
Deux je suis là dessus.
Et de 50 et quelques lignes je passe à une.
Merci Beaucoup
"MichDenis" a écrit dans le message de news:

'------------------------------
For a = 1 to 15

Cells(2, a).FormulaR1C1 = _

"=IF(ISERROR(INDEX(Usine,MATCH(RC41,code,0),1)),"""",(INDEX(Usine,MATCH(RC41,code,0),1)))"

Next
'------------------------------