OVH Cloud OVH Cloud

Raccourcir mon code VBA

25 réponses
Avatar
YANN24
Bonjour,
je voudrais savoir s'il est possible de raccourcir mon code VBA.
En fait je copie la valeur de la cellule de la page "Analyse", et je colle
sur ma page.
Puis je descend d'une ligne, et copie la valeur de la cellulle de la page
"Analyse", mais en descendant de 20 lignes.
cette opération se répette 22 fois.
Est-ce possible de racourcir le code?
Merci d'avance.
YANN

Ci-après, le code actuelle pour ma première ligne et ma seconde ligne de mon
tableau :
Sub MAJ_mai()
' MAJ_mai Macro
'ligne 01
Range("B116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[10]"
Range("C116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[10]"
Range("D116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[10]"
Range("E116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[10]"
Range("F116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[1]"
Range("G116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[1]"
Range("H116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[2]"
Range("I116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[1]"
Range("J116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[1]"
Range("K116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[6]"
'ligne 02
Range("B117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[10]"
Range("C117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[10]"
Range("D117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[10]"
Range("E117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[10]"
Range("F117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[1]"
Range("G117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[1]"
Range("H117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[2]"
Range("I117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[1]"
Range("J117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[1]"
Range("K117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[6]"

10 réponses

1 2 3
Avatar
YANN24
Re,
Ok, je vais essayer.
PAr contre, j'ai un petit sousci : les chiffres de "=Analyse!R[-104]C[" &
CStr(col(k)) & "]" arrivent assez vite en positif. Est-ce un soucis ou normal?
Et si non, comment faire?
Merci.
YANN


Comme ça ??


Sub MAJ_mai_court()
Dim i, j, k As Integer
Dim col As Variant

col = Array("10", "10", "10", "10", "1", "1", "2", "1", "1", "6")

For i = 116 To 117
k = 0
For j = 2 To 11

If i = 116 Then
Cells(i, j).FormulaR1C1 = "=Analyse!R[-104]C[" & CStr(col(k)) & "]"
Else
Cells(i, j).FormulaR1C1 = "=Analyse!R[-85]C[" & CStr(col(k)) & "]"
End If

If Cells(i, j).Value = 0 Then
Cells(i, j).Value = ""
End If

k = k + 1
Next j
Next i


End Sub



Avatar
YANN24
Re Oliv,
merci pour ton aide.
en effet, je me retrouve en dehors du tableau.
Comment faire pour éviter ce problème? (car les chiffres qui sont là, je ne
sais pas d'où ils viennent).
Merci.
YANN



HD que je salut a écrit dans
d6s9rt$15pp$
A la place de :
Range("B116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[10]"
Tu peux mettre directement :
Range("B116").FormulaR1C1 = "=Analyse!R[-104]C[10]"

Et à la place de :
Range("B117").FormulaR1C1 = "=Analyse!R[-85]C[10]"
Range("C117").FormulaR1C1 = "=Analyse!R[-85]C[10]"
Range("D117").FormulaR1C1 = "=Analyse!R[-85]C[10]"
Range("E117").FormulaR1C1 = "=Analyse!R[-85]C[10]"
Tu peux mettre directement :
Range("B117:E117").FormulaR1C1 = "=Analyse!R[-85]C[10]"


J'allais dire pareil
mais il peux ajouter une boucle pour les colonnes suivantes
C4
For L = 116 To 138

Range(Cells(L, 2), Cells(L, 5)).FormulaR1C1 = "=Analyse!R[-" & C & "]C[10]"
Range(Cells(L,6),Celss(L,10)).FormulaR1C1 = "=Analyse!R[-" & C & "]C[1]"
C4-19
Next L

Mais tu dois adapter les valeurs parce que si tu commances à la ligne 104 et
que tu diminus de 19 tu va être vite hors tableau.

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~






Avatar
Phil99999
Je ne comprends pas ta question !!! Tout dépend de tes données, non ?


Re,
Ok, je vais essayer.
PAr contre, j'ai un petit sousci : les chiffres de "=Analyse!R[-104]C[" &
CStr(col(k)) & "]" arrivent assez vite en positif. Est-ce un soucis ou normal?
Et si non, comment faire?
Merci.
YANN


Comme ça ??


Sub MAJ_mai_court()
Dim i, j, k As Integer
Dim col As Variant

col = Array("10", "10", "10", "10", "1", "1", "2", "1", "1", "6")

For i = 116 To 117
k = 0
For j = 2 To 11

If i = 116 Then
Cells(i, j).FormulaR1C1 = "=Analyse!R[-104]C[" & CStr(col(k)) & "]"
Else
Cells(i, j).FormulaR1C1 = "=Analyse!R[-85]C[" & CStr(col(k)) & "]"
End If

If Cells(i, j).Value = 0 Then
Cells(i, j).Value = ""
End If

k = k + 1
Next j
Next i


End Sub





Avatar
ru-th
(si ses valeurs qui t'intéressent et pas les formules
(si ce sont les valeurs qui t'intéressent et non les formules)


coup de bol que l'ancêtre ne soit pas dans le secteur !
a+
rural thierry
"ru-th" a écrit dans le message de news:

salut

vires les formular1c1 pour des value

devrait le faire (pas testé)
a+
rural thierry

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


Re,
merci pour le code. C'est vrai que c'est plus simple que mon truc.
Mais j'ai commencé avec le code de Phil, donc je vais continuer avec.
Merci quand même.
Sur le code de Phil9999, je voudrais rajouter, si possible, que si les
valeurs à copier sont égales à 0, alors on ne copie rien. Est-ce
possible?


Merci.
YANN


Correctif
Range("j" & x & ",k" & x).Value = .Range("k" & y & ",q" & y).Value
remplacer le h par le q
désolé

"ru-th" a écrit dans le message de news:

variante

Sub test2()
With Sheets("analyse")
x = 116
y = 12
suite:
Range("b" & x & ":e" & x).Value = .Range("l" & y & ":o" & y).Value
Range("f" & x & ":g" & x).Value = .Range("g" & y & ":h" & y).Value
Range("h" & x & ":i" & x) = .Range("j" & y)
Range("j" & x & ",k" & x) = .Range("k" & y & ",h" & y)
If x = 116 Then
x = 117: y = 32
GoTo suite
End If
End With
End Sub

a+
rural thierry
"YANN24" a écrit dans le message
de




news:

Bonjour,
je voudrais savoir s'il est possible de raccourcir mon code VBA.
En fait je copie la valeur de la cellule de la page "Analyse", et
je





colle
sur ma page.
Puis je descend d'une ligne, et copie la valeur de la cellulle de
la





page
"Analyse", mais en descendant de 20 lignes.
cette opération se répette 22 fois.
Est-ce possible de racourcir le code?
Merci d'avance.
YANN

Ci-après, le code actuelle pour ma première ligne et ma seconde
ligne de




mon
tableau :
Sub MAJ_mai()
' MAJ_mai Macro
'ligne 01
Range("B116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[10]"
Range("C116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[10]"
Range("D116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[10]"
Range("E116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[10]"
Range("F116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[1]"
Range("G116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[1]"
Range("H116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[2]"
Range("I116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[1]"
Range("J116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[1]"
Range("K116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[6]"
'ligne 02
Range("B117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[10]"
Range("C117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[10]"
Range("D117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[10]"
Range("E117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[10]"
Range("F117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[1]"
Range("G117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[1]"
Range("H117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[2]"
Range("I117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[1]"
Range("J117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[1]"
Range("K117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[6]"

















Avatar
Clément Marcotte
Sub test2()


Me semble que t'étais rendu pas mal plus loin que 2, non ? ;-)

--
On n' apprend pas à un vieux singe à faire des grimaces

Avatar
YANN24
Non, c'est bon.
J'avais un soucis, mais ça vennait d'ailleurs.
J'ai créé un bouton de commande, et je ne peux plus le supprimer. Comment
puis-je faire?
Merci.
YANN


Je ne comprends pas ta question !!! Tout dépend de tes données, non ?


Re,
Ok, je vais essayer.
PAr contre, j'ai un petit sousci : les chiffres de "=Analyse!R[-104]C[" &
CStr(col(k)) & "]" arrivent assez vite en positif. Est-ce un soucis ou normal?
Et si non, comment faire?
Merci.
YANN


Comme ça ??


Sub MAJ_mai_court()
Dim i, j, k As Integer
Dim col As Variant

col = Array("10", "10", "10", "10", "1", "1", "2", "1", "1", "6")

For i = 116 To 117
k = 0
For j = 2 To 11

If i = 116 Then
Cells(i, j).FormulaR1C1 = "=Analyse!R[-104]C[" & CStr(col(k)) & "]"
Else
Cells(i, j).FormulaR1C1 = "=Analyse!R[-85]C[" & CStr(col(k)) & "]"
End If

If Cells(i, j).Value = 0 Then
Cells(i, j).Value = ""
End If

k = k + 1
Next j
Next i


End Sub







Avatar
YANN24
Re,
Ah bon, car les formules que j'utilise ne sont pas bonnes ?
merci.
YANN


(si ses valeurs qui t'intéressent et pas les formules
(si ce sont les valeurs qui t'intéressent et non les formules)


coup de bol que l'ancêtre ne soit pas dans le secteur !
a+
rural thierry
"ru-th" a écrit dans le message de news:

salut

vires les formular1c1 pour des value

devrait le faire (pas testé)
a+
rural thierry

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


Re,
merci pour le code. C'est vrai que c'est plus simple que mon truc.
Mais j'ai commencé avec le code de Phil, donc je vais continuer avec.
Merci quand même.
Sur le code de Phil9999, je voudrais rajouter, si possible, que si les
valeurs à copier sont égales à 0, alors on ne copie rien. Est-ce
possible?


Merci.
YANN


Correctif
Range("j" & x & ",k" & x).Value = .Range("k" & y & ",q" & y).Value
remplacer le h par le q
désolé

"ru-th" a écrit dans le message de news:

variante

Sub test2()
With Sheets("analyse")
x = 116
y = 12
suite:
Range("b" & x & ":e" & x).Value = .Range("l" & y & ":o" & y).Value
Range("f" & x & ":g" & x).Value = .Range("g" & y & ":h" & y).Value
Range("h" & x & ":i" & x) = .Range("j" & y)
Range("j" & x & ",k" & x) = .Range("k" & y & ",h" & y)
If x = 116 Then
x = 117: y = 32
GoTo suite
End If
End With
End Sub

a+
rural thierry
"YANN24" a écrit dans le message
de




news:

Bonjour,
je voudrais savoir s'il est possible de raccourcir mon code VBA.
En fait je copie la valeur de la cellule de la page "Analyse", et
je





colle
sur ma page.
Puis je descend d'une ligne, et copie la valeur de la cellulle de
la





page
"Analyse", mais en descendant de 20 lignes.
cette opération se répette 22 fois.
Est-ce possible de racourcir le code?
Merci d'avance.
YANN

Ci-après, le code actuelle pour ma première ligne et ma seconde
ligne de




mon
tableau :
Sub MAJ_mai()
' MAJ_mai Macro
'ligne 01
Range("B116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[10]"
Range("C116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[10]"
Range("D116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[10]"
Range("E116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[10]"
Range("F116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[1]"
Range("G116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[1]"
Range("H116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[2]"
Range("I116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[1]"
Range("J116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[1]"
Range("K116").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-104]C[6]"
'ligne 02
Range("B117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[10]"
Range("C117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[10]"
Range("D117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[10]"
Range("E117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[10]"
Range("F117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[1]"
Range("G117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[1]"
Range("H117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[2]"
Range("I117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[1]"
Range("J117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[1]"
Range("K117").Select
ActiveCell.FormulaR1C1 = "=Analyse!R[-85]C[6]"






















Avatar
ru-th
dans une vie antérieure ... ;-))
je me souviens qu'il y avait déjà à l'époque, un vieux ronchon lyonnais,
il existe encore ?
a+
rural thierry
"Clément Marcotte" a écrit dans le message
de news: #
Sub test2()


Me semble que t'étais rendu pas mal plus loin que 2, non ? ;-)

--
On n' apprend pas à un vieux singe à faire des grimaces




Avatar
Phil99999
Il faut te mettre en mode création, je pense que c'est ça.
Tu cliques sur l'icone en forme de règle dans la boite à outil contrôle,
après, tu devrait pouvoir sélectionner ton bouton et le supprimer
A+
Phil


Non, c'est bon.
J'avais un soucis, mais ça vennait d'ailleurs.
J'ai créé un bouton de commande, et je ne peux plus le supprimer. Comment
puis-je faire?
Merci.
YANN


Je ne comprends pas ta question !!! Tout dépend de tes données, non ?


Re,
Ok, je vais essayer.
PAr contre, j'ai un petit sousci : les chiffres de "=Analyse!R[-104]C[" &
CStr(col(k)) & "]" arrivent assez vite en positif. Est-ce un soucis ou normal?
Et si non, comment faire?
Merci.
YANN


Comme ça ??


Sub MAJ_mai_court()
Dim i, j, k As Integer
Dim col As Variant

col = Array("10", "10", "10", "10", "1", "1", "2", "1", "1", "6")

For i = 116 To 117
k = 0
For j = 2 To 11

If i = 116 Then
Cells(i, j).FormulaR1C1 = "=Analyse!R[-104]C[" & CStr(col(k)) & "]"
Else
Cells(i, j).FormulaR1C1 = "=Analyse!R[-85]C[" & CStr(col(k)) & "]"
End If

If Cells(i, j).Value = 0 Then
Cells(i, j).Value = ""
End If

k = k + 1
Next j
Next i


End Sub









Avatar
YANN24
Encore moi
juste encore un truc.
Comment adapter ce code pour ce ça me copie les données qui sont dans la
feuille "Analyse", sans qu'il y ait une formule dans ma cellule?
Avec l'idée de ru-th ?
Merci
YANN


Je ne comprends pas ta question !!! Tout dépend de tes données, non ?


Re,
Ok, je vais essayer.
PAr contre, j'ai un petit sousci : les chiffres de "=Analyse!R[-104]C[" &
CStr(col(k)) & "]" arrivent assez vite en positif. Est-ce un soucis ou normal?
Et si non, comment faire?
Merci.
YANN


Comme ça ??


Sub MAJ_mai_court()
Dim i, j, k As Integer
Dim col As Variant

col = Array("10", "10", "10", "10", "1", "1", "2", "1", "1", "6")

For i = 116 To 117
k = 0
For j = 2 To 11

If i = 116 Then
Cells(i, j).FormulaR1C1 = "=Analyse!R[-104]C[" & CStr(col(k)) & "]"
Else
Cells(i, j).FormulaR1C1 = "=Analyse!R[-85]C[" & CStr(col(k)) & "]"
End If

If Cells(i, j).Value = 0 Then
Cells(i, j).Value = ""
End If

k = k + 1
Next j
Next i


End Sub







1 2 3