Excel - Copie de la valeur d'une cellule

Résolu/Fermé
boby - 4 oct. 2010 à 14:47
 boby - 7 oct. 2010 à 08:49
Bonjour,

Voilà ma problèmatique :
2 feuilets, A et B.
En A j'ai une cellule avec une valeur.
Je souhaite exporter le resultat de la cellule du feuilet A vers une cellule du feuilet B.

Par contre je ne souhaite pas que la cellule du feuilet B importe la valeur de la cellule du feuilet A. (exemple =feuilleA!A1)

Objectif:
Si le feuilet A est remplie et que je le supprime, les valeurs A retransmisent dans B doivent rester toujours apparentes.

Merci.

11 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
4 oct. 2010 à 15:45
Sélectionner la valeur de la cellule de la feuille A, clic droit, copier
Sélectionner la feuille B, sélectionner la cellule destination, clic droit, coller

J'ai du mal à comprendre l'objectif, en effet la problématique indique qu'il n'y a qu'une cellule avec une valeur sur la feuille A
0
Tout à fait il n'y a qu'une cellule avec une valeur sur le feuilet A.
Cette valeur doit être exportée en automatique dans une cellule définie du feuilet B.
L'intêret est de pouvoir librement supprimer le feuilet A et que la valeur de la cellule dans le feuilet B soit toujours visible.
J'embarque une contrainte, le feuilet B doit reste vierge de toutes formules, voilà pourquoi je parle d'une exportation de A à B.

En soit le copier/coller est une bonne alternative manuelle mais je souhaite trouver une alternative automatique.

Merci pour votre réponse.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
4 oct. 2010 à 17:51
Re,

Automatique, oui mais déclenché par quoi ?

Tu peux adapter ce code (à placer dans thisworkbook) qui est déclenché par toute modification de feuille (ou de cellule) :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  
  If Sh.Name = "A" And Target.Address = "$A$1" Then
    Worksheets("B").Range("A1").Formula = Sh.Range(Target.Address).Value
  End If

End Sub


Patrice
0
Re,

Merci pour tes réponses.

Déclenché par le seul fait que je rentre ma valeur manuellement.
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
4 oct. 2010 à 18:42
Bonjour tout le monde,

Une autre proposition qui conserve la valeur si celle d'origine est supprimée :
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [A1]) Is Nothing Then Exit Sub
    If Target.Value <> "" Then Worksheets("Feuil2").[A1] = Target.Value
End Sub
à mettre dans la feuille "A"

eric
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
4 oct. 2010 à 19:03
Bonjour eriiic,

boby veut pouvoir supprimer la feuille A, je suppose qu'il veut aussi pouvoir en rajouter une, sinon je ne voit pas trop l'intérêt d'écrire du code. S'il ne doit servir qu'une seule fois, le Copier - Coller est bien plus simple et plus rapide !

Attendons sa réponse ...
Cordialement
Patrice
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
4 oct. 2010 à 20:18
Effectivement j'ai lu de travers... :-)
Je pensais supprimer la cellule.
A+
eric
0

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

Posez votre question
Raymond PENTIER Messages postés 58721 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 15 novembre 2024 17 236
5 oct. 2010 à 00:40
Ecrire une macro pour éviter un copier-coller, c'est prendre un tank pour écraser une mouche, ou louer une berline pour aller acheter le pain ...
0
Re,

J'ai simplifié le problème à l'essentiel......

Vous allez comprendre les fondements de ma demande.

Je dois remplir un document Excel afin d'effectuer beaucoup d'audits techniques, environs 200.
Ce document à plusieurs feuillets, environ 15.
Je n'ai pas le droit de changer, d'interférer, ou de modifier les feuillet ni leurs tableaux.
Ce document est officiel.

J'ai repéré 75 questions orales et communes à chaque audit.
Ces 75 questions sont toutes réparties dans les 15 feuillets dans un ordre sans logique.
Elles attendent toutes une réponses que je dois normalement annoter dans une cellule précise.

Ma seule façon de gagner du temps durant un audit est de créé provisoirement une liste de ces 75 questions sur un même feuillet qui permet d'alimenter chaque cellules en attentes d'une réponse dans les 15 feuillets.

Une fois que l'ensemble des réponses sont dispatchées dans l'ensemble des feuillets et une fois que l'audit est terminé, je souhaite supprimer ce feuillet.
Alors le fichier Excel retrouvera son intégrité originale sans modification hormis les réponses de l'audit.

Voilà l'intérêt de trouver un copier/coller automatique, qui dès l'entrée d'une valeur se copie dans la bonne cellule du bon feuillet.
J'ai le droit que de modifier le feuillet provisoire avec la liste des 75 questions.

Voilà voilà...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
5 oct. 2010 à 14:44
Bonjour,
Nous comprenons mieux.
A ta place, je passerais : soit par une macro associée à un bouton, soit par un UserForm.
La procédure pour la macro est relativement simple, en gros ça donne quelque chose comme ça :
Private Sub CommandButton1_Click()
Sheets("NomDeLaFeuilleDeDestination").Range("AdresseDeLaCelluleDestination").Value = Sheets("NomDeLaFeuilleSource")..Range("AdresseDeLaCelluleSource").Value
End Sub

Et ceci pour toutes les cellules...
Exemple :
Private Sub CommandButton1_Click()
Sheets("Feuil2").Range("A25").Value = Sheets("Questions").Range("B1").Value
Sheets("Feuil3").Range("B12").Value = Sheets("Questions").Range("B2").Value
etc...
End Sub
0
C'est pas mal du tout...
0
J'ai appliqué et j'aime bien.
Si je supprime le feuillet avec ce bouton, la macro rattachée à ce bouton sera également supprimée?
Fonctionnera t'il à plusieurs reprises (plusieurs clics en cas de modifications des valeurs)?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
Modifié par pijaku le 6/10/2010 à 08:57
Salut,
Si tu cliques à nouveau sur le bouton, les valeurs seront toutes remplacées.
Je n'avais pas pensé à la suppression de ta feuille...
Pour cela, il est possible de rattacher une macro à une barre d'outils personnalisée de ton excel. Je n'ai jamais tenté cette expérience. Le descriptif ici
Sinon tu peux toujours créer un UserForm et y placer ton bouton...
Ou alors, ne passe pas par un bouton. Place le code plus haut dans un module (en remplacant Private Sub CommandButton1_Click() par Sub Envoi_donnees()) et dans le menu Outils Macro, affecte un raccourci clavier à ta macro. par contre, en cas d'effacement de feuille, il faut que tu fasses attention car dans le code de la macro les feuilles sont appelées par leur nom...
0
Raymond PENTIER Messages postés 58721 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 15 novembre 2024 17 236
Modifié par Raymond PENTIER le 5/10/2010 à 14:01
Non ! Mauvaise procédure ...

"Je n'ai pas le droit de changer, d'interférer, ou de modifier les feuillet ni leurs tableaux." Mais le classeur n'est pas protégé, sinon tu ne pourrais pas le renseigner. Donc, contrairement à ce que tu écris, rien ne t'empêche d'y mettre tes formules du type =feuilleA!A1 ou plutôt ='[classeur de saisie.xls]Feuil1'!$A$1

Ainsi tu peux utiliser ton classeur de saisie pour inscrire les réponses à tes 75 questions ; ton classeur officiel étant ouvert simultanément, il se met à jour au fur et à mesure de tes saisies. Pour terminer il te faudra sélectionner simultanément (touche shift) les 15 feuilles et la totalité de leur contenu (raccourci clavier ctrl+A), et faire Données/Connexions/Modifier les liens d'accès/Rompre la liaison. De cette façon les formules sont remplacées par les données.
Tu enregistres le classeur ainsi manipulé sous un nom du style "Audit DUPONT" ; ton classeur officiel reste intact et disponible pour un nouvel audit. Et tu fermes ton classeur de saisie sans enregistrer les modifications (ou en le sauvegardant sous un autre nom du style "Saisie DUPONT") afin de pouvoir le réutiliser.

Ce n'est pas jouable ?
C'est bien, la retraite ! Surtout aux Antilles ... :-)
☻ Raymond ♂
0
Raymond PENTIER Messages postés 58721 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 15 novembre 2024 17 236
5 oct. 2010 à 14:04
"J'embarque une contrainte, le feuilet B doit reste vierge de toutes formules, voilà pourquoi je parle d'une exportation de A à B. "

c'est une contrainte que tu t'imposes toi-même, mais qui n'est pas exigée par une autorité supérieure et qui ne se justifie pas.

Je me trompe ?
0
C'est une réelle contrainte venant de ma hiérarchie.
Il semble que ce même fichier va être injecter dans une base de donnée. Comment? Je ne sais pas.
0
Raymond PENTIER Messages postés 58721 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 15 novembre 2024 17 236
7 oct. 2010 à 01:59
"Il semble que ce même fichier va être injecter dans une base de donnée"
Cette remarque n'est pas du tout contradictoire avec ma suggestion #10 : Le fichier que tu obtiens en fin d'opération respecte les prescriptions de ta hiérarchie, car il ne contient plus aucune formule.
Mon commentaire #11 ne remettait absolument pas en cause la procédure que j'avais développée, et qui m'apparaît comme la solution que tu devrais mettre en oeuvre, en attendant que la méthode XML (#12) ou modèle ADO (#20) prenne le relais.
0
Raymond PENTIER Messages postés 58721 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 15 novembre 2024 17 236
5 oct. 2010 à 14:20
boby, nous avons tous pris l'habitude, dans ce forum, d'évoquer uniquement le langage VBA (macros).

Mais dans ton cas, j'ai l'impression que la bonne solution aurait été de travailler avec le langage XML (balises). Donc si dans ton entourage professionnel il y a quelqu'un qui le pratique, tu es sauvé !
0
Merci de ton avis, je vais voir si je trouve une solution plus simple en XML
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
5 oct. 2010 à 16:14
Salut Raymond,
@ boby : juste au cas ou tu aurais loupé ma réponse : lien
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
6 oct. 2010 à 23:58
Bonsoir,

Comme dit Raymond, tu pourrais utiliser un classeur séparé pour la saisie.
Avec une macro VBA, tu peux écrire directement dans le classeur cible sans l'ouvrir.

Consulte ce Tuto :
Lire et écrire dans les classeurs Excel fermés

Patrice
0
Raymond PENTIER Messages postés 58721 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 15 novembre 2024 17 236
7 oct. 2010 à 01:45
Tu vois, boby, il y a toujours plusieurs manières, sous Excel, de traiter un problème et d'en obtenir la solution.

* Les formules classiques offrent déjà de sacrées performances.
* Les macros deviennent nécessaires quand l'exposé du problème contient les expressions "automatiquement, tout seul, dans la même cellule, depuis un autre classeur" ...
* Les cas très particulers, comme le problème que tu nous as soumis, peuvent trouver une procédure de résolution avec des outils plus complexes, qui s'apparentent à de la programmation : ce peut être le recours à XML (#12) ou au modèle ADO (#20). Mais là, il faut attacher sa ceinture et s'accrocher ... C'est du haut niveau !
0
Beaucoup de réponses pour une situation qui me semblait bien complexe.

Merci à l'ensemble pour vos réponses, j'ai enfin de quoi avancé !

Bonne continuation messieurs.
0