(VBA) Copier coller de plage de cellule

johndoe47

XLDnaute Nouveau
Bonjour, j'ai besoin de savoir comment copier coller une plage de cellule sachant que je doit copier une plage du type :
sheets(1).range(sheets(2).range(A1):sheets(2).range(A2)).copy

En fait, avant cela, je viens copier une plage D20:BL20 (qui se trouvait dans une plage D19:BL30) ce qui laisse la grande plage avec une ligne vide. J'aimerais donc supprimer la ligne vide en décalant les suivantes de la grande plage(puisque je ne peux pas filtrer à cause de cellules fusionnées)

j'ai essayé de nommer des parties etc:

Sheets("Récap par stagiaire").Activate

Range("D2:F2").Select
Selection.Copy
Range("AT4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False

m = Sheets("Récap par stagiaire").Range("AQ5").Value
n = Sheets("Récap par stagiaire").Range("AS5").Value
o = Sheets("Récap par stagiaire").Range("AQ6").Value
p = Sheets("Récap par stagiaire").Range("AQ7").Value
q = Sheets("Récap par stagiaire").Range("AQ4").Value

Sheets("Suivi Sessions").Activate

Sheets("Suivi Sessions").Range([m]).Offset([n], 60).Select
Selection.Copy
Range([q]).Select
ActiveSheet.Paste
Range([o]).Offset(0, 60).Select
Selection.ClearContents
Range([p]).Offset(0, 60).Select
Selection.Copy
Range([o]).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
 

johndoe47

XLDnaute Nouveau
Re : (VBA) Copier coller de plage de cellule

en fait, je voudrais sélectionner une plage avec range, c'est à dire sheets("une feuille").range("valeur de cellule concaténé dans une autre feuille":"2ème valeur de cellule concaténé dans une autre feuille")

j'ai vu une fonction qui me semble pas mal: la fonction offset que je ne sais pas utilisé
 

johndoe47

XLDnaute Nouveau
Re : (VBA) Copier coller de plage de cellule

voilà un fichier exemple
 

Pièces jointes

  • Nouveau Feuille Microsoft Office Excel (2).xlsx
    9.2 KB · Affichages: 119
  • Nouveau Feuille Microsoft Office Excel (2).xlsx
    9.2 KB · Affichages: 103
  • Nouveau Feuille Microsoft Office Excel (2).xlsx
    9.2 KB · Affichages: 108

Dranreb

XLDnaute Barbatruc
Re : (VBA) Copier coller de plage de cellule

Bonjour.
Ce n'était pas évident du tout que votre Feuil2 contenait des adresses de cellules. Vous l'auriez dit tout de suite...
Ceci est d'une syntaxe correcte et fait ce que vous demandez:
VB:
Feuil1.[C5:C6].Value = Feuil1.Range(Feuil2.[C1].Value & ":" & Feuil2.[C2].Value).Value
Mais au vu de ce que vous avez mis en l'occurence dans feuille 2 ça prend en fait la première colonne seulement des valeurs de 4 cellules.
Remarque: dans mon exemple écrit comme ça, Feuil1 et Feuil2 doivent être les CodeName des feuilles et non leurs noms Excel, et ça ne marche que pour les feuilles du classeur portant le projet VBA contenant la macro (ThisWorkbook)
À+
 

Verba_Tim

XLDnaute Occasionnel
Re : (VBA) Copier coller de plage de cellule

Salut ^^
Pourquoi ne pas faire:
Code:
Sub Macro1()

Dim x As Variant
Dim y As Variant


    Sheets("feuil2").Activate
    x = Range("C1").Value
    y = Range("C2").Value
    Sheets("feuil1").Activate
    Sheets("Feuil1").Range(x & ":" & y).Select
    Selection.Copy
    Sheets("Feuil1").Activate
    Sheets("Feuil1").Range("C5").Select
    ActiveSheet.Paste
End Sub

:)

Au plaisir de Vous lire,

VB_T
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : (VBA) Copier coller de plage de cellule

Bonjour Verba_Tim
Pourquoi ne pas faire:
Parce que
1 - ça fait des activations et sélections inutile pour le résultat voulu
2 - ça va chercher 4 fois l'objet banalisé nommé "Feui1" et vérifiier en liaisons tardives qu'il est équipé de méthodes Activate et Range parce que ce ne sont pas des Chart mais des Worksheet, ce qu'on aurait pu indiquer directement
3 - parce que le type Variant se traite moins rapidement que d'autre types et ne documente pas le programme du rôle des variables.
L'enregistrement de macros est fait pour trouver, sans avoir à chercher, les méthodes effectuant des opérations identiques à celles commandées depuis l'interface utilisateur, en un squelette constituant un exemple magnifique, parfait, irréprochable ...de ce qu'il ne faut surtout pas faire !
À+
 

Verba_Tim

XLDnaute Occasionnel
Re : (VBA) Copier coller de plage de cellule

BAM
1-0 pour Bernard, Vainqueur par K.O.
Bon et bien même si ça marchait... A ne pas faire alors.
Entre parenthèse, je ne me suis pas servi de l'enregistreur de macro...

Merci tout de même pour la remarque, bien qu'abrupte mais constructive...

Je tâcherai de m'en souvenir.

A+

VB_T

Ps: Quand on cherche une efficacité relative sur une macro de courte durée, est-il nécessaire de passer par l'utilisation de syntaxe plus contraignante alors qu'au final la durée d'exécution ne varie que de centième de seconde et que le résultat sera le même?
En somme est-il toujours nécessaire de "perdre du temps pour en gagné" selon la théorie, mais pour un gain de temps négligeable?
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : (VBA) Copier coller de plage de cellule

En somme est-il toujours nécessaire de "perdre du temps pour en gagné" selon la théorie, mais pour un gain de temps négligeable?
Peut être pas, mais pour perpétuer les bonnes habitudes peut être. Dans ce cas c'est plus la concision et la clarté du code qui importe.
Désolé d'avoir été abrupt sans compenser de plus de forme.
Cordialement.
 

Verba_Tim

XLDnaute Occasionnel
Re : (VBA) Copier coller de plage de cellule

Ok ^^ Message reçu 5 sur 5!
Il ne me reste plus qu'a prendre des bonnes habitudes alors... Parce que je passe très souvent par ce genre de méthode...
Je vais m'efforcer de mieux faire :)

Merci à toi

Cordialement,


VB_T
 

Discussions similaires

Réponses
5
Affichages
175
Réponses
3
Affichages
607

Statistiques des forums

Discussions
312 489
Messages
2 088 849
Membres
103 974
dernier inscrit
chmikha