Simplification de code VBA (copié/collage spécial)

  • Initiateur de la discussion Initiateur de la discussion rounil09
  • 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 !

rounil09

XLDnaute Occasionnel
Bonjour la liste,

Ce code VBA fonctionne.

Sheets("Liste_EP").Select

Sheets("Liste_EP").Range("B" & Rows.Count).End(xlUp).Copy
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Activate
ActiveCell.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone

Sheets("Liste_EP").Range("D" & Rows.Count).End(xlUp).Copy
Range("D" & Rows.Count).End(xlUp).Offset(1, 0).Activate
ActiveCell.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone

Sheets("Liste_EP").Range("E" & Rows.Count).End(xlUp).Copy
Range("E" & Rows.Count).End(xlUp).Offset(1, 0).Activate
ActiveCell.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone


Il y a sans nul doute une écriture condensée bien plus simple (et donc plus rapide).
Il y a un bon moment que j'insiste pour en venir à bout, mais j'y perd le latin que je n'ai jamais eu…
Bref. Un petit coup de pouce serait le bienvenu…
 
Re : Simplification de code VBA (copié/collage spécial)

Salut rounil09 et le forum
Utilise les balises !
Code:
Sheets("Liste_EP").Select

Range("B" & Rows.Count).End(xlUp).Copy
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone
        
Range("D" & Rows.Count).End(xlUp).Copy
Range("D" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone

Range("E" & Rows.Count).End(xlUp).Copy
Range("E" & Rows.Count).End(xlUp).Offset(1, 0)..PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone
J'ai juste sélectionné la feuille, mais on peut le faire sans sélection avec un With et un point devant chaque instruction pour lui lier les range
A+
 
Re : Simplification de code VBA (copié/collage spécial)

Merci Gorfael,
Je vais faire avec un with.
Je pensais, à priori a tort, qu'on pouvait regrouper la copie des 3 cellules dans une ligne

Quelque chose du style.
Range("B, D, E" & Rows.Count).End(xlUp).Copy
 
Re : Simplification de code VBA (copié/collage spécial)

Salut rounil09 et le forum
Petit rappel : il n'y a ni télépathe ni devin parmi ceux qui essaient de répondre !
Le code fourni nous donne la copie des formules des dernières cellules non vides des colonnes B, D et E à la ligne suivante, sans aucune autre information, sans savoir à quoi ça sert, ni si les colonnes sont d'égales longueurs, ni si le fait de copier C serait néfaste => tu as donc une réponse qui correspond à la question posée et pas à celle que tu as imaginée 😡 !
On peut envisager un bout de code du genre :
Code:
Dim X as Long
...
X=cells(Rows.count,"B").end(xlup).row
range(cells(x,"B"),cells(x,"E")).copy
Range("B" & x+1).PasteSpecial Paste:=xlPasteFormulas
range(x+1,"C").clearcontent
Je ne l'ai pas testée.
De plus, si B est vide, on risque la perte des données en C, D et E
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

Discussions similaires

Réponses
10
Affichages
791
Réponses
2
Affichages
399
Réponses
4
Affichages
754
  • Question Question
Microsoft 365 Erreur de format
Réponses
5
Affichages
597
Retour