Copier des CELLULES INTACTES vers un autre fichier

Bonsoir tout le monde,

Je bloque sur un point, j'ai crée une macro qui permet de copier des données vers un autre fichier excel, ligne par ligne et par feuille.

Pour repérer la ligne qui a été copié dans le fichier source, j'ai indiqué une coloration jaune. Le problème est que je ne repère plus les cellules qui ont subies une mise en forme conditionnelle. C'est à dire, qu'une cellule qui est bleu car ne contient pas de formule devient jaune après importation des données et celle qui en contient une devient jaune aussi. J'ai aucun moyen de les différencier malgré le code couleur de départ. J'ai pensé y ajouter des bordures pour repérer les lignes copier mais là encore, les cellules deviennent bordées mais non colorées.

Je voudrais donc savoir comment copier des cellules et pas seulement les valeurs qu'elles contiennent.

Merci pour votre aide!!

Voici le code :

Sub COPIE_DONNEES() 'copierdonnees Macro 
On Error GoTo ERREUR 'en cas d'erreur sur le code

''''''''''''Mise en place des nom des fichiers sources et destinataire'''''''''''''''''''
Dim wb As Workbook
Dim source As String
Dim destinataire As String

destinataire = ThisWorkbook.Name 'nom du fichier destinataire
For Each wb In Application.Workbooks
    If wb.Name <> destinataire Then
        source = wb.Name 'nom du fichier source
        Exit For
    End If
Next wb
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''''''''''''Copie des cellules concernees'''''''''''''''''''''''''''''''''''''''''''''''
Dim nbfeuillesacopier As Integer
Dim premligneacopier As Integer
nbfeuillesacopier = ThisWorkbook.Sheets.Count - 1

For j = 11 To 31
    If Cells(j, 13).Value = Range("C6").Value Then
        premligneacopier = j
    End If
Next

For k = 1 To nbfeuillesacopier
    Workbooks(destinataire).Worksheets(k).Rows(premligneacopier).Value = Workbooks(source).Worksheets(k).Rows(premligneacopier).Value
    Workbooks(destinataire).Worksheets(k).Rows(premligneacopier).Interior.Color = vbYellow
    Workbooks(destinataire).Worksheets(k).Rows(premligneacopier + 36).Value = Workbooks(source).Worksheets(k).Rows(premligneacopier + 36).Value
    Workbooks(destinataire).Worksheets(k).Rows(premligneacopier + 36).Interior.Color = vbYellow
    Workbooks(destinataire).Worksheets(k).Rows(premligneacopier + 71).Value = Workbooks(source).Worksheets(k).Rows(premligneacopier + 71).Value
    Workbooks(destinataire).Worksheets(k).Rows(premligneacopier + 71).Interior.Color = vbYellow
Next
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

MsgBox "importation réussie " & Range("C6").Value, vbInformation

Exit Sub 'message en cas d'erreur sur le code
ERREUR: MsgBox "Mimi se demande si le fichier est bien ouvert?", vbCritical

End Sub

bonjour

ma remarque personnelle : il ne faut jamais utiliser les mises en forme (manuelles, MFC ou par macro) pour stocker de l'information

préférer une colonne contenant un chiffre

dans ton cas, une colonne dans laquelle tu mets 1 après sa copie

Bonjour,

Je ne comprend pas trop, vous parlez de copier des cellules vers un autre fichier mais ce que vous faites ici n'est pas de la copie. Vous travaillez avec des "=". Donc la notion de copie n'est pas vraie.

Pour avoir les mises en forme présentes au départ, il faut passer par un code qui copie vos cellules. Le code est tout simple par exemple :

Range("A2").Copy Range("A3")

Va copier les valeurs et la mise en forme de la cellule A2 sur la cellule A3.

Cordialement.

Salut à vous,

Merci pour vos réponses.

J'ai essayé cette modification pour la copie de la première ligne de chacun des fichiers mais je me trompe sur la syntaxe...

Je suis totalement novice pour ce qui est des écritures du code VBA, merci pour votre aide !!

For k = 1 To nbfeuillesacopier
    Workbooks(destinataire).Worksheets(k).Range("premligneacopier") .Copy
    source Workbooks(source).Worksheets(k).Range("premligneacopier")

    Workbooks(destinataire).Worksheets(k).Rows(premligneacopier + 15).Value = Workbooks(source).Worksheets(k).Rows(premligneacopier + 15).Value

    Workbooks(destinataire).Worksheets(k).Rows(premligneacopier + 30).Value = Workbooks(source).Worksheets(k).Rows(premligneacopier + 30).Value

Next
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
11source.xlsm (48.50 Ko)
8destinataire.xlsm (48.64 Ko)

Bonsoir,

Avec ton code Kuartz, on copie seulement une cellule vers une autre, je ne vois pas comment l'adapter pour faire en sorte de copier "toutes les cellules" d'une " ligne en particulier" et ce pour "toutes les feuilles".

Sachant que les 2 fichiers: destinataire et source sont identiques en terme de colonnes et de lignes, la seule différence est que le fichier destinataire contient des valeurs que je souhaiterais copier dans le fichier source en gardant le jeu des couleurs obtenu par la MFC.

Comment procédé ?

Merci à vous de prendre de votre temps pour essayer d'avancer

Rechercher des sujets similaires à "copier intactes fichier"