XL 2016 Button copier coller cellules indépendantes VBA autre feuille

Duam

XLDnaute Nouveau
Bonjour,

Je suis débutante en VBA, et je ne comprends pas tout!

Je dois effectuer un fichier qui copie des cellules indépendantes les unes des autres (ce n'est pas une plage de cellules) dans une feuille qui se nomme "fiche saisie".
Puis, je dois coller les cellules dans une autre feuille "données" à la suite des autres valeurs de chaque colonnes.

Je voulais faire un bouton activeX pour copier les valeurs et les coller dans l'autre feuille.
J'ai une erreur 1004 qui est à la ligne 5 mais je ne comprends pas.
Il y a des annotations mais pas à prendre en compte

VB:
Private Sub Copier_dans_données_Click()
    Application.ScreenUpdating = False
    Dim xSheet As Worksheet
    Set xSheet = ActiveSheet
        If xSheet.Name <> "Definitions" And xSheet.Name <> "fx" And xSheet.Name <> "Needs" Then
Worksheets("Fiche saisie").Cells("M4").Copy Destination:=Worksheets("Données").Range("A")
Worksheets("Fiche saisie").Cells("C3").Copy Destination:=Worksheets("Données").Range("B")
Worksheets("Fiche saisie").Cells("C5").Copy Destination:=Worksheets("Données").Range("C")
Worksheets("Fiche saisie").Cells("I7").Copy Destination:=Worksheets("Données").Range("D")

'Format cellule mois et année
Worksheets("Fiche saisie").Cells("C3").Copy Destination:=Worksheets("Données").Range("E")
Worksheets("Fiche saisie").Cells("C3").Copy Destination:=Worksheets("Données").Range("F")

Worksheets("Fiche saisie").Cells("C11").Copy Destination:=Worksheets("Données").Range("G")
Worksheets("Fiche saisie").Cells("I5").Copy Destination:=Worksheets("Données").Range("H")
Worksheets("Fiche saisie").Cells("I3").Copy Destination:=Worksheets("Données").Range("I")
Worksheets("Fiche saisie").Cells("C13").Copy Destination:=Worksheets("Données").Range("J")
Worksheets("Fiche saisie").Cells("C7").Copy Destination:=Worksheets("Données").Range("K")
Worksheets("Fiche saisie").Cells("I9").Copy Destination:=Worksheets("Données").Range("M")
Worksheets("Fiche saisie").Cells("I11").Copy Destination:=Worksheets("Données").Range("N")
Worksheets("Fiche saisie").Cells("P9").Copy Destination:=Worksheets("Données").Range("O")
Worksheets("Fiche saisie").Cells("P13").Copy Destination:=Worksheets("Données").Range("P")
Worksheets("Fiche saisie").Cells("M9").Copy Destination:=Worksheets("Données").Range("R")
Worksheets("Fiche saisie").Cells("I13").Copy Destination:=Worksheets("Données").Range("S")
'Valeur en gramme
Worksheets("Fiche saisie").Cells("C20").Copy Destination:=Worksheets("Données").Range("T")
Worksheets("Fiche saisie").Cells("B20").Copy Destination:=Worksheets("Données").Range("U")
Worksheets("Fiche saisie").Cells("D20").Copy Destination:=Worksheets("Données").Range("V")
Worksheets("Fiche saisie").Cells("E20").Copy Destination:=Worksheets("Données").Range("W")
Worksheets("Fiche saisie").Cells("F20").Copy Destination:=Worksheets("Données").Range("X")
Worksheets("Fiche saisie").Cells("G20").Copy Destination:=Worksheets("Données").Range("Y")
Worksheets("Fiche saisie").Cells("H20").Copy Destination:=Worksheets("Données").Range("Z")
Worksheets("Fiche saisie").Cells("I20").Copy Destination:=Worksheets("Données").Range("AA")
Worksheets("Fiche saisie").Cells("J20").Copy Destination:=Worksheets("Données").Range("AD")
Worksheets("Fiche saisie").Cells("K20").Copy Destination:=Worksheets("Données").Range("AE")
Worksheets("Fiche saisie").Cells("L20").Copy Destination:=Worksheets("Données").Range("AF")
Worksheets("Fiche saisie").Cells("M20").Copy Destination:=Worksheets("Données").Range("AG")
Worksheets("Fiche saisie").Cells("B27").Copy Destination:=Worksheets("Données").Range("AH")
'SOMME E27 + F27
Worksheets("Fiche saisie").Cells("E20").Copy Destination:=Worksheets("Données").Range("AI")
'Pas sur fiche saisie
Worksheets("Fiche saisie").Cells("C27").Copy Destination:=Worksheets("Données").Range("AJ")
Worksheets("Fiche saisie").Cells("E20").Copy Destination:=Worksheets("Données").Range("AK")
Worksheets("Fiche saisie").Cells("H27").Copy Destination:=Worksheets("Données").Range("AL")
Worksheets("Fiche saisie").Cells("E20").Copy Destination:=Worksheets("Données").Range("AM")

Worksheets("Fiche saisie").Cells("L27").Copy Destination:=Worksheets("Données").Range("AP")
Worksheets("Fiche saisie").Cells("K27").Copy Destination:=Worksheets("Données").Range("AQ")
Worksheets("Fiche saisie").Cells("I27").Copy Destination:=Worksheets("Données").Range("AR")
Worksheets("Fiche saisie").Cells("M27").Copy Destination:=Worksheets("Données").Range("AS")
Worksheets("Fiche saisie").Cells("N27").Copy Destination:=Worksheets("Données").Range("AT")

Worksheets("Fiche saisie").Cells("P27").Copy Destination:=Worksheets("Données").Range("AW")
'Réclamation décision
Worksheets("Fiche saisie").Cells("E20").Copy Destination:=Worksheets("Données").Range("AY")

Worksheets("Fiche saisie").Cells("E20").Copy Destination:=Worksheets("Données").Range("AZ")
Worksheets("Fiche saisie").Cells("E20").Copy Destination:=Worksheets("Données").Range("BA")
Worksheets("Fiche saisie").Cells("E20").Copy Destination:=Worksheets("Données").Range("BB")
Worksheets("Fiche saisie").Cells("E20").Copy Destination:=Worksheets("Données").Range("BC")
Worksheets("Fiche saisie").Cells("E20").Copy Destination:=Worksheets("Données").Range("BD")
Worksheets("Fiche saisie").Cells("E20").Copy Destination:=Worksheets("Données").Range("BE")

            xSheet.Range("J1:L17").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        End If

    Application.ScreenUpdating = True
End Sub
 

vgendron

XLDnaute Barbatruc
pour nommer une cellule, tu as deux choix: sous forme de range
range("A1")
soit sous sa forme Cells(numLigne,NumCol)
A1==> Range("A1") = Cells(1,1)
==> Cells("A1") ==> ca ne marche pas

si tu postais ton fichier en exemple, on pourrait t'aider à expliquer le code et l'optimiser pour que tu t'en sortes
 

Duam

XLDnaute Nouveau
pour nommer une cellule, tu as deux choix: sous forme de range
range("A1")
soit sous sa forme Cells(numLigne,NumCol)
A1==> Range("A1") = Cells(1,1)
==> Cells("A1") ==> ca ne marche pas

si tu postais ton fichier en exemple, on pourrait t'aider à expliquer le code et l'optimiser pour que tu t'en sortes

Je n'ai rien changé pour le moment, et je vous joint le fichier.
 

Pièces jointes

  • OBSERVATOIRE DE LA QUALITE_SRP_MODELE SAISIE DONNEES.xlsm
    387.5 KB · Affichages: 3

vgendron

XLDnaute Barbatruc
en retour ton fichier

1) la macro est mise dans un module standard
et associée à un bouton de formulaire

2) j'ai mis des commentaires dans le code
la dernière ligne (pastespecial) a été mise en commentaire, car, en l'état, ca bug
 

Pièces jointes

  • OBSERVATOIRE DE LA QUALITE_SRP_MODELE SAISIE DONNEES.xlsm
    414.2 KB · Affichages: 2

Duam

XLDnaute Nouveau
en retour ton fichier

1) la macro est mise dans un module standard
et associée à un bouton de formulaire

2) j'ai mis des commentaires dans le code
la dernière ligne (pastespecial) a été mise en commentaire, car, en l'état, ca bug
Merci, en effet les dernières lignes ne servaient pas.
J'essaye de faire un pastespecial car dans certaines cellules il y a des formules et il n'y a que la valeur qui m'intéresse
 

Pièces jointes

  • OBSERVATOIRE DE LA QUALITE_SRP_MODELE SAISIE DONNEES.xlsm
    391.3 KB · Affichages: 3

vgendron

XLDnaute Barbatruc
s'il s'agit de copier uniquement les valeurs, tu peux te passer du copy destination

VB:
Sub Copier_dans_données()
Dim xSheet As Worksheet

Application.ScreenUpdating = False

Set xSheet = ActiveSheet

If xSheet.Name <> "Definitions" And xSheet.Name <> "fx" And xSheet.Name <> "Needs" Then
    With Sheets("Données") 'DANS la feuille "Données"
        LastLine = .Range("A" & .Rows.Count).End(xlUp).Row + 1 'Première ligne VIDE de la colonne A
        
        'copy colle des données dans la feuille "Données"
        .Range("A" & LastLine) = xSheet.Range("M4").Value
        .Range("B" & LastLine) = xSheet.Range("C3").Value
        .Range("C" & LastLine) = xSheet.Range("C5").Value
        .Range("D" & LastLine) = xSheet.Range("I7").Value
        
        'Format cellule mois et année
        .Range("E" & LastLine) = xSheet.Range("C3").Value
        .Range("F" & LastLine) = xSheet.Range("C3").Value
        
        .Range("G" & LastLine) = xSheet.Range("C11").Value
        .Range("H" & LastLine) = xSheet.Range("I5").Value
        .Range("I" & LastLine) = xSheet.Range("I3").Value
        .Range("J" & LastLine) = xSheet.Range("C13").Value
        .Range("K" & LastLine) = xSheet.Range("C7").Value
        .Range("M" & LastLine) = xSheet.Range("I9").Value
        .Range("N" & LastLine) = xSheet.Range("I11").Value
        .Range("O" & LastLine) = xSheet.Range("P9").Value
        .Range("P" & LastLine) = xSheet.Range("P13").Value
        
        .Range("R" & LastLine) = xSheet.Range("M9").Value
        .Range("S" & LastLine) = xSheet.Range("I13").Value
        'Valeur en gramme
        .Range("T" & LastLine) = xSheet.Range("C20").Value
        .Range("U" & LastLine) = xSheet.Range("B20").Value
        .Range("V" & LastLine) = xSheet.Range("D20").Value
        .Range("W" & LastLine) = xSheet.Range("E20").Value
        .Range("X" & LastLine) = xSheet.Range("F20").Value
        .Range("Y" & LastLine) = xSheet.Range("G20").Value
        .Range("Z" & LastLine) = xSheet.Range("H20").Value
        .Range("AA" & LastLine) = xSheet.Range("I20").Value
        .Range("AD" & LastLine) = xSheet.Range("J20").Value
        .Range("AE" & LastLine) = xSheet.Range("K20").Value
        .Range("AF" & LastLine) = xSheet.Range("L20").Value
        .Range("AG" & LastLine) = xSheet.Range("M20").Value
        .Range("AH" & LastLine) = xSheet.Range("B27").Value
        
        'SOMME E27 + F27
        .Range("AI" & LastLine) = xSheet.Range("E20").Value
        
        'Pas sur fiche saisie
        .Range("AJ" & LastLine) = xSheet.Range("C27").Value
        .Range("AK" & LastLine) = xSheet.Range("E20").Value
        .Range("AL" & LastLine) = xSheet.Range("H27").Value
        .Range("AM" & LastLine) = xSheet.Range("E20").Value
        .Range("AP" & LastLine) = xSheet.Range("L27").Value
        .Range("AQ" & LastLine) = xSheet.Range("K27").Value
        .Range("AR" & LastLine) = xSheet.Range("I27").Value
        .Range("AS" & LastLine) = xSheet.Range("M27").Value
        .Range("AT" & LastLine) = xSheet.Range("N27").Value
        .Range("AW" & LastLine) = xSheet.Range("P27").Value
       
    
    'pour faire un pastespecial valeurs, transposer, il faut déjà commencer par un copier
        'xSheet.Range("J1:L17").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    End With
End If

Application.ScreenUpdating = True
End Sub

Je crois meme que le .value n'est pas indispensable
 

Discussions similaires

Statistiques des forums

Discussions
302 038
Messages
1 999 900
Membres
214 702
dernier inscrit
Gaël0410