Optimiser prg en VBA

  • Initiateur de la discussion Initiateur de la discussion Didier MAUCOTEL
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

Didier MAUCOTEL

Guest
Salut le Forum,

Voici quelques lignes de VBA qui permettent de copier des cellules d'une feuille vers une autre en fonction de la ligne où l'on exécute le double click.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim x As Integer
x = Target.Range("A1").Row
Worksheets("Fiche").Select

Worksheets("Fichier Source").Range(Cells(x, 10), Cells(x, 10)).Copy
Worksheets("Fiche").Range("B8").PasteSpecial xlPasteFormats
Worksheets("Fiche").Range("B8") = Worksheets("Fichier Source").Range(Cells(x, 10), Cells(x, 10))

Worksheets("Fichier Source").Range(Cells(x, 11), Cells(x, 11)).Copy
Worksheets("Fiche").Range("C8").PasteSpecial xlPasteFormats
Worksheets("Fiche").Range("C8") = Worksheets("Fichier Source").Range(Cells(x, 11), Cells(x, 11))

Worksheets("Fichier Source").Range(Cells(x, 12), Cells(x, 12)).Copy
Worksheets("Fiche").Range("D8").PasteSpecial xlPasteFormats
Worksheets("Fiche").Range("D8") = Worksheets("Fichier Source").Range(Cells(x, 12), Cells(x, 12))

Application.CutCopyMode = False
End Sub


Il y a en tout plus d'une centaine de cellules à copier et je trouve cela un peu long lors de l'exécution.

Y a t'il un moyen d'écrire cela de manière plus conforme ? (je n'arrive pas à réduire la syntaxe "Range(Cells(x, 12), Cells(x, 12)" de façon à copier des paquets de cellules contigues).

Merci d'avance pour vos propositions...


Didier
 
salut,

si toutes tes cellules que tu copie se suivent tu peut faire une boucle.
par exemple pour les lignes que tu a écrit cela donne :

Dim x As Integer
x = Target.Range("A1").Row
Worksheets("Fiche").Select

For i = 2 To 4
Worksheets("Fichier Source").Range(Cells(x, 10), Cells(x, 10)).Copy
Worksheets("Fiche").Cells("8," & i).PasteSpecial xlPasteFormats
Worksheets("Fiche").Range("8," & i) = Worksheets("Fichier Source").Range(Cells(x, i + 8), Cells(x, i + 8))
Next i

donc je c pas si c adaptable a ton cas....cela dépend d'ou et vers ou tu copie.
enfin j'ai pas tester mais je le sens bien comme ça ^^
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
376
Réponses
17
Affichages
2 K
Réponses
2
Affichages
433
Réponses
0
Affichages
600
Réponses
7
Affichages
657
  • Question Question
Microsoft 365 Cpier/coller en VBA
Réponses
7
Affichages
727
Retour