Excel : Copies de données

Résolu/Fermé
dertygun - 11 juil. 2008 à 02:35
LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 - 16 juil. 2008 à 20:33
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.
A voir également:

8 réponses

LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 337
11 juil. 2008 à 18:32
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
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
LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 337
12 juil. 2008 à 11:50
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
"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
LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 337
12 juil. 2008 à 18:05
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
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
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
LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 337 > dertygun
13 juil. 2008 à 09:55
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 337
14 juil. 2008 à 09:58
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
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
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
LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 337
15 juil. 2008 à 13:21
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
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
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
LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 337 > dertygun
16 juil. 2008 à 20:33
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