amelioration de code

teamtat

XLDnaute Occasionnel
Bonjour,
etant débutant en VBA, je suis sur que mon code est optimisable (je sais pas si sa existe ce mot)

Code:
shtbase.Range("C11").Copy
shtpda.Range("A1").PasteSpecial

shtbase.Range("D11").Copy
shtpda.Range("B1").PasteSpecial

shtbase.Range("N11").Copy
shtpda.Range("C1").PasteSpecial

shtbase.Range("E11").Copy
shtpda.Range("D1").PasteSpecial

shtbase.Range("F11").Copy
shtpda.Range("E1").PasteSpecial

shtbase.Range("G11").Copy
shtpda.Range("F1").PasteSpecial

shtbase.Range("S11").Copy
shtpda.Range("G1").PasteSpecial

Merci
 

MP59

XLDnaute Occasionnel
Re : amelioration de code

bonjour,
essaie

Dim shtbase As Worksheet, shtpda As Worksheet
Sheets("shtbase").Range("C11:f11").Copy
Sheets("shtpda").Range("A1").PasteSpecial
Sheets("shtbase").Range("s11").Copy
Sheets("shtpda").Range("g1").PasteSpecial
Application.CutCopyMode = False


MP59
 

Pierrot93

XLDnaute Barbatruc
Re : amelioration de code

Bonjour à tous

peut se faire également de cette façon :

Code:
Dim shtbase As Worksheet, shtpda As Worksheet
Set shtbase = Sheets("Feuil1")
Set shtpda = Sheets("Feuil2")
shtbase.Range("C11:D11").Copy Destination:=shtpda.Range("A1:B1")

A adapter pour le reste des cellules à copier...

bon après midi
@+
 

teamtat

XLDnaute Occasionnel
Re : amelioration de code

Bonjour,
Merci pour vos solutions

Code:
 shtbase.Range("C11,D11,E11,F11,G11,H11,N11,S11").Copy
shtpda.Range("A1").PasteSpecial

cela fonctionne mais je voudrais que la colonne N soit en 3eme position donc j'ai essayé ceci (j'ai mis le "N" en 3eme position mais cela ne change pas)

Code:
 shtbase.Range("C11,D11,N11,E11,F11,G11,H11,S11").Copy
shtpda.Range("A1").PasteSpecial

Quelqu'un sait pourquoi ?
 

teamtat

XLDnaute Occasionnel
Re : amelioration de code

Je pourrai pas attribuer une cellule a une autre
par exemple C11 a A1, D11 a B1, N11 a C1, etc ...

j'ai essayé ce morceau de code mais cela ne fonctionne pas

Code:
shtbase.Range("C11,D11,N11,E11,F11,G11,H11,S11").Copy
shtpda.Range("A1,B1,C1,D1,E1,F1,G1,H1").PasteSpecial
 

Pierrot93

XLDnaute Barbatruc
Re : amelioration de code

Re

une autre façon de procéder, les tableaux doivent avoir le même nombre d'élément :

Code:
Sub test()
Dim t1() As Variant, t2() As Variant, i As Byte
t1 = Array("C11", "D11", "N11", "E11", "F11", "G11", "H11", "S11")
t2 = Array("A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1")
For i = LBound(t1, 1) To UBound(t1, 1)
    Sheets("FeuilleDestination").Range(t2(i)).Value = Sheets("FeuilleSource").Range(t1(i)).Value
Next i
End Sub
 

teamtat

XLDnaute Occasionnel
Re : amelioration de code

Merci cela fonctionne parfaitement
maintenant il faut que je copie les données des colonnes et c'est toujours pareil avec mon code je n'est pas la colonne N en 3eme position

Code:
For i = 8 To 16
If shtbase.OLEObjects("CheckBox" & i).Object.Value Then shtbase.Range("C" & i + 4 & ",D" & i + 4 & ",N" & i + 4 & ",E" & i + 4 & ",F" & i + 4 & ",G" & i + 4 & ",S" & i + 4).Copy shtpda.Range("A" & i - 6)
Next i
 

Pierrot93

XLDnaute Barbatruc
Re : amelioration de code

Bonjour,

un petit fichier en pièce jointe, ainsi que précisément le résultat que tu attends nous ferait sans doute gagner du temps, en l'état nous risquons de tourner en rond longtemps...

bonne journée
@+
 

teamtat

XLDnaute Occasionnel
Re : amelioration de code

Voila ci-joint un fichier exemple
Quand j'exporte mes lignes grace au checkbox, je voudrais quelle soit dans cette ordre : nom, valeur, prix bordereaux, type, type contrat, MO unit et derniere mise a jour
Merci
 

Pièces jointes

  • exemple.xls
    48 KB · Affichages: 65
  • exemple.xls
    48 KB · Affichages: 64
  • exemple.xls
    48 KB · Affichages: 64

Pierrot93

XLDnaute Barbatruc
Re : amelioration de code

Bonjour,

essaye peut être en replacant les colonnes en fin de procédure...

Code:
For i = 1 To 8
    If shtbase.OLEObjects("CheckBox" & i).Object.Value Then shtbase.Range("A" & i + 4 & ",B" & i + 4 & ",F" & i + 4 & ",C" & i + 4 & ",D" & i + 4 & ",E" & i + 4 & ",G" & i + 4).Copy shtpda.Range("A" & i)
Next i

With shtpda
    .Columns("C:C").Insert Shift:=xlToRight
    .Columns("G:G").Cut Destination:=Columns("C:C")
    .Columns("G:G").Delete Shift:=xlToLeft
End With

bonne journée
@+
 

papapaul

XLDnaute Impliqué
Re : amelioration de code

Bonsoir Forum :)
Un travail sur les Checkboxes qui m'intéresse beaucoup.
Malgré ce qu'il y a dans ce fil et dans bien d'autres,
j'arrive pas adapter pour mon projet, :confused: alors à tout hasard je réponds.
J'ai mis des explications en Feuil1 et 3

Merci d'avance aux experts.
 

Pièces jointes

  • Case a cocher pour rectifier des lignes V10.xls
    69 KB · Affichages: 58

Discussions similaires

Réponses
5
Affichages
683

Statistiques des forums

Discussions
312 448
Messages
2 088 504
Membres
103 872
dernier inscrit
Gufre