Copie d'une plage spécifique

Signaler
-
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
-
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

Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
3
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+
Messages postés
8216
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
30 octobre 2020
19
Bonjour ManuAntibes,

Avec VBA, il faut absolument éviter d'utiliser .Select, c'est la principale source d'erreur quand les codes ne fonctionnent plus.
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
3
Merci pour les conseils
Messages postés
8216
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
30 octobre 2020
19
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