Excel : Copies de données

Résolu
dertygun -  
LePierre Messages postés 249 Statut Membre -
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. LePierre Messages postés 249 Statut Membre 338
     
    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
  2. dertygun
     
    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. LePierre Messages postés 249 Statut Membre 338
       
      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
  3. dertygun
     
    "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. LePierre Messages postés 249 Statut Membre 338
       
      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
  4. dertygun
     
    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. dertygun
       
      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
      1. LePierre Messages postés 249 Statut Membre 338 > dertygun
         
        bonjour

        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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dertygun
     
    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. LePierre Messages postés 249 Statut Membre 338
       
      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
  7. dertygun
     
    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
  8. dertygun
     
    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. LePierre Messages postés 249 Statut Membre 338
       
      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
  9. dertygun
     
    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. dertygun
       
      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
      1. LePierre Messages postés 249 Statut Membre 338 > dertygun
         
        bonsoir

        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