Copie d'une plage spécifique

Paulo44711 - 14 mars 2019 à 10:14
ManuAntibes
Messages postés
491
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
18 novembre 2021
- 15 mars 2019 à 23:54
Bonjour, je cherche à intégrer un macro à un bouton. Cette macro devrait:
copier la plage C3 à G3, et la coller (sans la mise en forme, juste les valeurs) dans la dernière cellule non vide de la colonne C en partant de C3. J'ai essayé avec les différentes solution proposées ici mais cela ne fonctionne pas. Une idée? Je vous remercie

2 réponses

ManuAntibes
Messages postés
491
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
18 novembre 2021
4
14 mars 2019 à 16:45
Bonjour



'Pour un copier / coller(Uniquement la valeur)


Après a toi de mettre tous cela bout à bout.
Fait faire une boucle avec for next pour recup dans une variable le contenu de C3 à G3.

dim TonContenu as variant
For x = 0 To 4 
TonContenu+ = Cells(3, x) 
Next x


' Pour selectionner la dérniere cellule plein de la colonne C
    Range("C65535").Select
    Selection.End(xlUp).Select


'Pour recup la position de la dernière cellules de la colonne C
Dim PosX, PosY As Variant

 PosX = ActiveCell.Column
    PosY = ActiveCell.Row
    Cells(PosY, PosX ).Select
    ActiveSheet.Paste

 'pour coller uniquement la valeur
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False


j'espère t'avoir aidé, mais tu peux tous faire avec l'enregistrement de macro, je viens de le faire pour me rememorer les codes.
A+
0
Patrice33740
Messages postés
8549
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
7 mai 2022
21
Modifié le 15 mars 2019 à 16:35
Bonjour ManuAntibes,

Avec VBA, il faut absolument éviter d'utiliser .Select, c'est la principale source d'erreur quand les codes ne fonctionnent plus.
0
ManuAntibes
Messages postés
491
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
18 novembre 2021
4
15 mars 2019 à 23:54
Merci pour les conseils
0
Patrice33740
Messages postés
8549
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
7 mai 2022
21
Modifié le 15 mars 2019 à 16:39
Bonjour,

Essaies :
Option Explicit
Sub Test()
Dim r As Range, c As Range
  With ActiveSheet  'Ou Worksheets("MaFeuille")
    ' Plage à copier
    Set r = .Range("C3:G3")
    ' Plage continue contenant la dernière cellule non vide en partant de C3
    Set c = Intersect(.Range("C3").CurrentRegion, .Columns("C"))
    ' Dernière cellule non vide en partant de C3
    Set c = .Cells(c.Row + c.Rows.Count - 1, "C")
  End With
  ' Copier les valeurs
  c.Resize(r.Rows.Count, r.Columns.Count).Value = r.Value
End Sub



Cordialement
Patrice
0