Excel : Copies de données

Résolu
Bonjour,
J'ai une question à propos d'Excel.
Voilà, j'ai deux feuilles ouvertes : sur la première un Tableau avec des données et sur la deuxieme, le meme tableau (jusqu'à la, pas de probleme...).
Le tableau de la deuxieme feuille est fait de tel façon à ce que chaque donnée que je tape dans le tableau de la feuille 1, y soit automatiquement copier a l'identique (la encore, pas de probleme).

Ma seul question vient de la "couleur" : En effet, si mon tableau n°1 contient une donnée que je met en rouge, elle sera automatiquement copier dans mon tableau n°2 mais dans la couleur basique (noir).

Je voudrais donc savoir si quelqu'un sait comment copier une cellule d'excel vers une autre feuille, tel que la couleur soit egalement la meme !!

Cordialement.
Configuration: Windows XP
Internet Explorer 7.0

8 réponses

  1. Bonjour

    A partir de la Feuille 1, appuie sur la touche Ctrl et clique sur l'onglet Feuille 2 sans relacher Ctrl

    Ensuite clique dans la (ou les) cellule(s) de Feuille 1 et change les couleurs --> la Feuille 2 est mise à jour automatiquement

    Clique ensuite sur Feuille 3 pour déselectionner les deux premières feuilles

    à plus
    0
    1. Merci.
      Mais peut tu me dire comment tu ferais dans le cas ou ces tableau ne sont pas dans le meme document Excel (donc pas d'onglet), mais dans deux documents Excel distinct.
      0
      1. Bonjour

        Effectivement, avec 2 classeurs ça ne marche pas.

        A mon avis, il faut passer par une macro commande "Worksheet_SelectionChange" à incorporer dans la feuille1 de ton 1er classeur pour tester s'il y a un changement de propriété de la cellule afin de recopier le nouveau format de cellule
        ou,
        d'une façon plus "basique" (je dirais "bestiale"), réaliser une copie systématique du format de la dernière cellule active dans la même cellule de ton classeur 2

        Es-tu familiarisé avec les macros VBA ?

        à plus
        0
    2. "Es-tu familiarisé avec les macros VBA ? "
      - Pas du tout, je vois ce que c'est, j'en utilise pour certain fichier, mais c'est encore un total trou noir pour moi, Cependant je suis sur que seul une macro pourait regler mon probleme.

      IL faudrait logiquement une macro qui puisse copié, en plus des données de ma cellule, le "code couleur" des données de ma cellule A5 (claseur 1) sur ma cellule A5 (classeur 2)...je suis a peu près bon ou c'est pas du tout sa ???
      0
      1. Bonjour

        Voici un petit exemple avec des macros : https://www.cjoint.com/?hmr2lgJvXd

        Mode d'emploi :

        Extrait les 2 fichiers de Test_Données.Zip

        Ouvre uniquement le fichier Test_Données1.xls (il faut accepter l'exécution des macros)
        (à l'ouverture de ce fichier, Test_Données2.xls sera ouvert automatiquement)

        Dans la feuille1, tu peux saisir ou modifier le format de n'importe qu'elle cellule, celle ci sera copiée automatiquement dans le fichier Test_Données2.xls.

        Si tu veux modifier le nom des fichiers, il est impératif de conserver les N° (ex = nouveauNom1.xls)

        Est-ce que cela te conviens ?

        a plus
        0
    3. En effet c'est exactement sa. J'ai cependant une question :

      Comment fait on pour que la copie soit faite uniquement sur une plage de cellule (du genre B3;F8) et non sur toutes les cellules de la page.
      0
      1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If FlagRéférences = 1 Then Exit Sub

        FlagRéférences = 1

        Application.ScreenUpdating = False
        Add2 = ActiveCell.Address
        Add = Cells(LigF1, ColF1).Address
        Cells(LigF1, ColF1).Copy
        Windows(NomFichierSecondaire).ActiveSheet.Range(Add).PasteSpecial
        Application.CutCopyMode = False
        Range(Add2).Select
        ColF1 = ActiveCell.Column
        LigF1 = ActiveCell.Row
        Application.ScreenUpdating = True

        FlagRéférences = 0

        End Sub

        Si je veut electionner la plage de cellule ("B3:F8") par exemple, quels sont les critères que je dois changer
        0
      2. @dertygunbonjour

        il faut ajouter la ligne de commande : ActiveSheet.ScrollArea = "B3:G15"
        dans la procédure :
        Private Sub Workbook_Open()
            ColF1 = ActiveCell.Column
            LigF1 = ActiveCell.Row
            Chemin = ActiveWorkbook.Path
            NomFichierPrincipal = ActiveWorkbook.Name
            NomFichierSecondaire = Left(NomFichierPrincipal, Len(NomFichierPrincipal) - 5) & "2.xls"
            Workbooks.Open Filename:=Chemin & "\" & NomFichierSecondaire
            Windows(NomFichierPrincipal).Activate
            ActiveSheet.ScrollArea = "B3:G15"
        End Sub

        pour limiter la saisie à la plage B3:G15 par exemple

        Pour autoriser la saisie sur toutes la saisie, utilise : ActiveSheet.ScrollArea = ""

        à plus
        0
    4. le seul probleme de cette manip, c'est que je ne peut plus acceder aux autres cellules de la feuille

      Disons que la feuille de mon premier classeur j'ai sa :

      Donnée A
      Donnée B
      Tableau C

      et sur la feuille de mon second classeur j'ai :

      Donnée D
      Donnée E
      Tableau C

      donc quand j'autorise la saisie sur toutes les cellules de la feuille de mon premier classeur, il me copie toutes les donnee alors que seul le tableau doit l'etre.
      Et quand je met juste une plage de celllule (avec le code que vous venez de me donner), je ne peut acceder a aucune autres cellules, a part celles de la plage sellectionner, ce qui est genant, puisque je ne peut plus acceder aux autres informations de ma feuille.

      Tout serais donc parfait si le code me laissait aussi naviguer tranquillement sur les autres cellules, pas comprises dans le "ActiveSheet.ScrollArea = "..:..." "
      0
      1. Bonjour

        Effectivement, je n'avais pas saisi ta question.
        Voici une version rectifiée qui ne prend en compte la saisie de données que dans une certaine plage de cellules ("B3:G15" dans cet exemple)
        https://www.cjoint.com/?hoj3FEsFCn

        à plus
        0
    5. C'est EXACTEMENT sa !!

      Je tiens a vous remercier particulierement pour l'aide que vous m'avez apporté et le tempsque cette macro va me faire gagner !
      0
      1. juste une derniere question.

        Je souhaite inclure cette macro dans le fichier qui m'interesse, mais j'ai du mal.
        Quels sont les donnee que je dois changer pour que sa marche, sachant que mon 1er fichier se nomme : "Année 2008 A" et le second "Année 2008 B".

        Feuil1

        Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If FlagRéférences = 1 Then Exit Sub
        'Action seulement pour la zone "B3:G15"
        Col = ActiveCell.Column
        Lig = ActiveCell.Row
        If Col < 2 Or Col > 8 Then Exit Sub
        If Lig < 3 Or Lig > 15 Then Exit Sub
        '----------------------------------------

        FlagRéférences = 1

        Application.ScreenUpdating = False
        Add2 = ActiveCell.Address
        Add = Cells(LigF1, ColF1).Address
        Cells(LigF1, ColF1).Copy
        Windows(NomFichierSecondaire).ActiveSheet.Range(Add).PasteSpecial
        Application.CutCopyMode = False
        Range(Add2).Select
        ColF1 = ActiveCell.Column
        LigF1 = ActiveCell.Row
        Application.ScreenUpdating = True

        FlagRéférences = 0

        End Sub

        thosWorbook

        Private Sub Workbook_Open()
        ColF1 = ActiveCell.Column
        LigF1 = ActiveCell.Row
        Chemin = ActiveWorkbook.Path
        NomFichierPrincipal = ActiveWorkbook.Name
        NomFichierSecondaire = Left(NomFichierPrincipal, Len(NomFichierPrincipal) - 5) & "2.xls"
        Workbooks.Open Filename:=Chemin & "\" & NomFichierSecondaire
        Windows(NomFichierPrincipal).Activate
        ActiveSheet.ScrollArea = ""
        End Sub

        Module 1

        Public Chemin As String
        Public NomFichierPrincipal As String
        Public NomFichierSecondaire As String
        Public ColF1
        Public LigF1
        Public FlagRéférences

        Ps : Faut t'il que je mettent mes deux fichiers dans le meme dossier ou ce n'est pas nécéssaire ??
        0
        1. Bonjour

          Il faut simplement modifier ainsi la ligne :
          NomFichierSecondaire = Left(NomFichierPrincipal, Len(NomFichierPrincipal) - 5) & "B.xls"
          dans ThisWorkbook

          Dans le code de l'exemple, il faut que le deux fichiers soient dans le même dossier.
          Si tu veux des dossiers différents, il faut modifier le code ainsi :
          Private Sub Workbook_Open()
              ColF1 = ActiveCell.Column
              LigF1 = ActiveCell.Row
              Chemin = "c:\MonDossier2" ' préciser le chemin complet du 2ème fichier
              NomFichierPrincipal = ActiveWorkbook.Name
              NomFichierSecondaire = Left(NomFichierPrincipal, Len(NomFichierPrincipal) - 5) & "B.xls"
              Workbooks.Open Filename:=Chemin & "\" & NomFichierSecondaire
              Windows(NomFichierPrincipal).Activate
              ActiveSheet.ScrollArea = ""
          End Sub

          à plus
          0
      2. SA me met ce probleme qu'il ya une erreur et sa me met en jaune cette ligne :

        Private Sub Workbook_Open()
        ColF1 = ActiveCell.Column
        LigF1 = ActiveCell.Row
        Chemin = "C:\Documents and Settings\jean philippe\Mes documents\\2008 - 2009 (V 2.1)\Année 2008 B"
        NomFichierPrincipal = ActiveWorkbook.Name
        NomFichierSecondaire = Left(NomFichierPrincipal, Len(NomFichierPrincipal) - 5) & "B.xls"
        Workbooks.Open Filename:=Chemin & "\" & NomFichierSecondaire
        Windows(NomFichierPrincipal).Activate
        ActiveSheet.ScrollArea = ""
        End Sub
        0
        1. Non, c'est bon, j'ai reussie a régler le probleme !!

          Voilà c'est parfait maintenant.

          Et juste pour savoir, tu fais comment dans le cas ou les 2 fichiers ont des noms completement differents (et pas xxxxxxx 1 et xxxxxxxx 2).

          En tout cas Merci encore !!
          0
        2. @dertygunbonsoir

          Si les noms des fichiers sont complétement différents il faut remplacer :
          NomFichierSecondaire = Left(NomFichierPrincipal, Len(NomFichierPrincipal) - 5) & "B.xls"
          par :
          NomFichierSecondaire = "Nom_Du_Fichier_Secondaire.xls"
          en remplaçant "Nom_Du_Fichier_Secondaire.xls" par le nom de ton fichier.

          à plus
          0