Copier la valeur sans la couleur de remplissage

DEVPLUS -  
 DEVPLUS -
Bonjour,
pouvez vous m'indiquer comment copier les valeurs de cellules d'une feuille dans d'autres cellules d'une autre feuille
sans copier la couleur de remplissage
Sub Transfert_Achat()
'
' Transfert_Achat Macro
'
Dim DerniereLigne As Integer
Dim i As Integer
Dim Y As Integer
Dim der As Integer
Dim h As Integer
Dim x As Integer
Dim Z As Integer
Dim W As Integer
DerniereLigne = Range("B400").End(xlUp).Row + 1
i = Range("F400").End(xlUp).Row + 1
Y = Range("K400").End(xlUp).Row + 1
Z = Range("C400").End(xlUp).Row + 1

Range("B42:B" & DerniereLigne).Copy Sheets("FA").Range("B14:B" & DerniereLigne).End(xlUp).Offset(1, 0)
Range("C42:C" & Z).Copy Sheets("FA").Range("C14:C" & Z).End(xlUp).Offset(1, 0)
Range("F42:F" & i).Copy Sheets("FA").Range("D14:D" & i).End(xlUp).Offset(1, 0)
Range("K42:K" & Y).Copy Sheets("FA").Range("E14:E" & Y).End(xlUp).Offset(1, 0)

Sheets("FA").Select

End Sub

3 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Au lieu de copier/coller les cellules comme tu le ferais avec un CTRL+C / CTRL+V .. je t'invite à ne prendre que les valeurs "proprement" via le code VBA.
    Pour lire une valeur d'une cellule :
    mavaleur = Sheets(1).Range("A1").value 
    ' ou 
    mavaleur = Sheets(1).cells(1,1).value
    

    De même pour écrire une valeur :
     Sheets(1).Range("A1").value = mavaleur
    ' ou 
     Sheets(1).cells(1,1).value = mavaleur
    

    Ce qui oblige à le faire cellule par cellule...

    Si, comme tu le souhaites, tu veux copier plusieurs cellules / lignes en même temps, dans ce cas
    Il suffit d'utiliser le
    .PasteSpecial xlPasteValues

    par exemple :
        Sheets("Sheet1").Columns("A1:A20").Copy
        Sheets("Sheet2").Columns("B1").PasteSpecial xlPasteValues
    


    NB: Pour poster ton code à l'avenir, merci de le faire en utilisant la coloration syntaxique :
    https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      bonjour


      Sheets(2).Range("B1:B20") = Sheets(1).Range("A1:A20").Value
      0
      1. DEVPLUS > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        bonjour,
        ça ne marche pas pour deux raison :
        1- le collage sur la 2éme feuille doit être positionner du n° de ligne 14 à 400 suivant le nombre de lignes de la 1ere feuille qui change à chaque fois.
        CAD: ligne N° 42 1ere feuille avec ligne N° 14 2éme feuille ainsi de suite.
        2- si j'efface ou je quitte ou je tape un nouveau achat la 1ere feuille est annuler après avoir été sauvegarder, par contre la 2éme feuille ne doit etre sauvegarder à part.
        0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      bonjour,

      Ce que Jordane et moi t'avons communiqué est le PRINCIPE

      A toi de faire le petit effort d'adaptation à ton contexte
      0
      1. DEVPLUS > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Merci Michel, sans oublier Jordan, en suivant le principe je suis arrivé à résoudre le problème avec le code suivant, mais seulement le code est trop long, j'ai comme l'impression que nous pouvons le réduire

        Sub Transfert_Achat()

        ' Transfert_Achat Macro
        Range("B42:B400").Select
        Selection.Copy
        Sheets("FA").Select
        Range("B14:B372").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Application.CutCopyMode = False

        Sheets("Dossier Achat").Select
        Range("C42:C400").Select
        Selection.Copy
        Sheets("FA").Select
        Range("C14:C372").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Application.CutCopyMode = False

        Sheets("Dossier Achat").Select
        Range("F42:F400").Select
        Selection.Copy
        Sheets("FA").Select

        Range("D14:D372").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Application.CutCopyMode = False

        Sheets("Dossier Achat").Select

        Range("K42:K400").Select
        Selection.Copy
        Sheets("FA").Select

        Sheets("FA").<code basic>Range
        ("E14:E372").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Application.CutCopyMode = False

        Sheets("FA").Select

        End Sub</code>
        0
      2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > DEVPLUS
         
        Bonjour,

        effectivement, il y a de quoi optimiser! d'alleurs, je t'avais indiqué une méthode car en VBA on évite au maximum les "select" et copy-paste
        d'autre part, on commence toujours par figer l'écran pour le confort des yeux et la rapidité.

        je vais te proposer un code puisque le tien fonctionne mais préférerais avoir le classeur
        pour cela
        Mettre le classeur sans données confidentielles en pièce jointe sur 
        https://mon-partage.fr/
        Puis faire un clic droit copier le raccourci et coller dans votre message


        PS Important; SUR QUELLE FEUILLE démarre ta macro? Transfert_Achat ?
        0
  2. DEVPLUS
     
    merci jordane45,
    je suis faible en vba , mais je vous prie de bien relire le code que j'ai envoyé, il ne s'agit pas de copier /coller
    la plage des cellule à transférer varie entre 42 et 400 pour les colonnes(B,F,K,C)
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      bonjour,

      comme tu transportes des valeurs, on peut prendre comme dernière ligne la ligne la + grande du bloc

      si tu pouvais mettre ton classeur , cela faciliterait le boulot
      pour cela
      Mettre le classeur sans données confidentielles en pièce jointe sur
      https://mon-partage.fr/
      Puis faire un clic droit copier le raccourci et coller dans votre message

      Dans l’attente
      0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Re,

    petite démo à compléter
    https://mon-partage.fr/f/iDEUnRQj/

    0
    1. DEVPLUS
       
      merci michel_m c'est beaucoup mieux.
      0