problème avec un copier coller

taupivin

XLDnaute Junior
Bonjour tout le monde,

J'essaie de réaliser un copier/coller des cellules non vides de la colonne A du fichier "Charge MD" vers les cellules vides de la plage (A10/A99) de la colonne A du fichier "charge MD" feuille "Vincent".

Une erreur apparait dans mon code mais je ne comprends pas trop pourquoi (je débute en vba ^^ )

PS : J'aurai aussi aimer savoir, s'il m'était obligé d'ouvrir le fichier "charge MD" pour réaliser ce copier coller.

Merci d'avance,

A bientôt
 

Pièces jointes

  • Charge MD.xlsx
    106.6 KB · Affichages: 58
  • Planning.xlsm
    406.3 KB · Affichages: 48
  • Planning.xlsm
    406.3 KB · Affichages: 52
  • Planning.xlsm
    406.3 KB · Affichages: 56

taupivin

XLDnaute Junior
Re : problème avec un copier coller

je viens de tenter ça mais ça ne marche pas non plus -________-'

Private Sub DonnéesPlanCharhe_Click()

Dim toto As Long

'Ouvre le fichier charge MD et filtre les infos de la page 2013 en fonction de l'utilisateur
Workbooks.Open Filename:= _
"\\Srv-maec0\services\Méthodes_SI\Méthodes SI partage\Charge MD.xlsx"
Sheets("2013").Range("$A$2:$P$281").AutoFilter Field:=5, Criteria1:="VT"


toto = Sheets("2013").Range("A3F300").Cells.SpecialCells(xlCellTypeLastCell).Row + 1
Sheets("Vincent").Range("A10:F99").Copy Destination:=Sheets("2013").Range("A" & toto + 1)


'ferme la fenêtre charge MD
Windows("Charge MD.xlsx").Close

End Sub
 

taupivin

XLDnaute Junior
Re : problème avec un copier coller

Salut à tous, je viens de régler mon problème de copier/coller mais j'ai désormais un autre soucis ^^'
Peut-on faire le copier/coller sans copier les formats de cellules (uniquement les valeurs) ???

Code:
Private Sub DonnéesPlanCharhe_Click()

Application.ScreenUpdating = False

Dim Source As Workbook, Cible As Workbook

Application.EnableEvents = False

Set Source = Workbooks.Open("C:\Documents and Settings\taupin vincent\Bureau\planning méthode\Charge MD.xlsx")
Set Cible = ThisWorkbook

With Source.Sheets("2013")
    .Range("B3:B" & .[B65536].End(xlUp).Row).Copy _
        Destination:=Cible.Sheets("vincent").Range("B65536").End(xlUp)(2)
    .Range("G3:G" & .[B65536].End(xlUp).Row).Copy _
        Destination:=Cible.Sheets("vincent").Range("C65536").End(xlUp)(2)
    .Range("I3:I" & .[B65536].End(xlUp).Row).Copy _
        Destination:=Cible.Sheets("vincent").Range("D65536").End(xlUp)(2)
    .Range("K3:K" & .[B65536].End(xlUp).Row).Copy _
        Destination:=Cible.Sheets("vincent").Range("E65536").End(xlUp)(2)
    .Range("L3:L" & .[B65536].End(xlUp).Row).Copy _
        Destination:=Cible.Sheets("vincent").Range("F65536").End(xlUp)(2)
End With

Range("$A$10:$F$200").RemoveDuplicates Columns:=Array(1, 2), Header _
    :=xlNo

Source.Close False

Application.EnableEvents = True

End Sub
 
G

Guest

Guest
Re : problème avec un copier coller

Bonjour,
Avec: Range("Destination").Value = Range("Origine").Value
Exemple:
Code:
        Cible.Sheets("vincent").Range("B65536").End(xlUp)(2).value =.Range("B3:B" & .[B65536].End(xlUp).Row).Value

A+
 

taupivin

XLDnaute Junior
Re : problème avec un copier coller

Merci beaucoup Hasco,

Par contre, c'est normal si cela ne copie qu'une seule ligne ? et non pas toutes les lignes non-vides ?
Code:
With Source.Sheets("2013")
    Cible.Sheets("vincent").Range("B65536").End(xlUp)(2).Value = .Range("B3:B" & .[B65536].End(xlUp).Row).Value
    Cible.Sheets("vincent").Range("C65536").End(xlUp)(2).Value = .Range("G3:G" & .[B65536].End(xlUp).Row).Value
    Cible.Sheets("vincent").Range("D65536").End(xlUp)(2).Value = .Range("I3:I" & .[B65536].End(xlUp).Row).Value
    Cible.Sheets("vincent").Range("E65536").End(xlUp)(2).Value = .Range("K3:K" & .[B65536].End(xlUp).Row).Value
    Cible.Sheets("vincent").Range("F65536").End(xlUp)(2).Value = .Range("L3:L" & .[B65536].End(xlUp).Row).Value
    
End With
 
G

Guest

Guest
Re : problème avec un copier coller

Bonjour,

Cela ira mieux comme ceci:
Code:
Sub copier_coller()
Dim derLigne As Long, nLignes As Long
    With Source.Sheets("2013")
        With .Range("B3:B" & .[B65536].End(xlUp))
            derLigne = .Row
            nLignes = .Rows.Count
        End With
        Cible.Sheets("vincent").Range("B65536").End(xlUp)(2).Resize(, nLignes).Value = .Range("B3:B" & derLigne).Value
        Cible.Sheets("vincent").Range("C65536").End(xlUp)(2).Resize(, nLignes).Value = .Range("G3:G" & derLigne).Value
        Cible.Sheets("vincent").Range("D65536").End(xlUp)(2).Resize(, nLignes).Value = .Range("I3:I" & derLigne).Value
        Cible.Sheets("vincent").Range("E65536").End(xlUp)(2).Resize(, nLignes).Value = .Range("K3:K" & derLigne).Value
        Cible.Sheets("vincent").Range("F65536").End(xlUp)(2).Resize(, nLignes).Value = .Range("L3:L" & derLigne).Value
    End With
End Sub

La mise en variable du numéro de la dernière ligne, et du nombre de lignes permettra:
1- de vérifier leur contenu soit par un debug.print soit en faisant une exécution pas à pas (F8) et en affichange la fenêtre 'variables locales'
2- d'aller un peu plus vite, le moteur vb n'ayant qu'à calculer qu'une seule fois leur valeur.

Il serait peut-être judicieux de calculer également une fois la prochaine ligne vide de la cible et sur la première colonne. Comme tu l'as écrit, elle est calculée pour chaque colonne. Si entre deux appels de la macros, l'utilisateur rajoute par mégarde un espace ou supprime une valeur dans l'une ou l'autre colonne, à l'appel suivant de la macro tu auras un décalage de lignes dans tes données.

Cela ne copie pas les couleurs ni autres formats. Si il te semble que cela le fait, c'est certainement que tu as un format conditionnel dans tes cellules cibles.

Dernière remarque, comme ton post#1 n'est pas très clair et qu'il n'y a aucune données dans ton fichier joints, je n'ai pas testé sur tes données

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 268
Messages
2 086 672
Membres
103 363
dernier inscrit
brian0496