Ajouter la valeur d'une cellule à une autre
Bonjour à vous tous !
Le Projet en cours est un jeu de société que nous (ma famille) affectionnons particulièrement, mais pour lequel il y a un temps non négligeable consacré à des calculs qui peuvent à la longue devenir rébarbatifs, mais qui surtout monopolise quasiment tous le temps d’un joueur, donc de façon à le rendre plus convivial surtout pour ce dernier, j’aurais souhaité confier cette tâche à notre ami commun Excel.
Au démarrage la valeur de chaque entreprise est définie par le jeu (feuille Achat(s)) et évolue selon les choix des participants ou les règles du jeu.
La question actuel est de rajouter à la valeur initiale de l’entreprise certaines valeurs définit par le tirage au sort de cartes qui impose des actions diverse, tel que :
- Générale motors + 40$, Toyota – 20$, Les constructeurs européens + 10$, les entreprises Française -20, ou plus tordu encore, - 10$ par titre des entreprises américaines détenue en majorités par les joueurs.
Concrètement :
- Si j’inscris 40$ dans la cellule C3 de la feuille « Politique Internationale », ce sont toutes les entreprises Allemandes qui voient leur valeur augmenter de 40$.
- Si j’inscris – 10$ dans la cellule C5 de la feuille « Politique Internationale », c’est l’entreprise B.A.S.F qui voit sa cotation baissée de 10$.
Lorsque j’aurais cliqué sur le bouton :
- A.E.G, Deutsche Bank et Volkswagen verront leur cotation augmenter de 40$
- B.A.S.F n’augmentera que de 30$
Le fichier joint est la copie exacte de la feuille « Politique Internationale » et la copie de la partie qui nous préoccupe ici de la feuille « Achat(s) ».
Il n’y a aucune donnée confidentielle, mais le poids du fichier entier ne m’autorise pas à le poster dans son intégralité, je l’aurais si non partagé avec plaisir, ce qui aurait certainement facilité les échanges de solutions et d’idées, ainsi que la compréhension globale du but recherché.
Je ne vous remercierais jamais assez de tout le temps que vous m’accordez…
Votre aide m’est infiniment précieuse.
Merci !
Philippe.
Bonjour,
Si je comprends ta question, tu as sur un feuille une liste d'entreprises identifiées avec en regard de ces identifications, en colonne C la ou les adresses des cellules contenant les cotations sur la feuille achats. Tu souhaiterais donc que lorsque tu modifies une cotation en portant un nombre positif ou négatif en regard (ce sera donc en colonne D, puisque la C est occupée par les adresses), Cette modification soit répercutée immédiatement sur la feuille achats.
Dans ce cas, une procédure évènementielle peut faire la mise à jour à la saisie d'une valeur en colonne D :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim e, p, i%
If Target.Column = 4 And Target.Value <> 0 Then
If Target.Offset(0, -1).Value <> "" Then
p = Target.Value
e = Split(Target.Offset(0, -1).Value)
For i = 0 To UBound(e)
With Worksheets("Achat(s)").Range(e(i))
.Value = .Value + p
End With
Next i
End If
Target.ClearContents
End If
End SubNB- Pour que cela marche, en colonne C : remplacer tes double-espaces par des espaces simples.
Vois si cela répond à ton attente.
Cordialement.
Ferrand
Re,
J'étais distrait
Cordialement.
Bonsoir !
Cela fait plus que répondre à mon attente et je t’en remercie !
J’avais songé à un bouton avec une macro, mais l’évènementiel me semble beaucoup mieux convenir.
Tu l’as pressenti, les infos de la colonne C n’étaient la que pour dire à quelle cellules celle-ci devais faire référence.
J’accueille donc avec soulagement le « NB », mais je ne sais pas où se situe les doubles espaces à supprimer, pourrais-tu me les indiquer s’il te plaît ?
Merci encore de tout cœur !
Philippe
Salut,
Mon "RE" était de trop. En fait ma rectification n'avait pas encore été validée par renvoi du message, et l'insertion du fichier rectifié s'est faite en même temps.
En colonne C tu as des chaînes, ex. : B1 F1 H2 R4, soit des références de cellules séparées par 2 espaces. Il convient qu'il n'y en ait qu'1 comme séparateur permettant de "splitter" la chaîne, c'est à dire en faire un tableau de ces références.
Bonne soirée.
Ferrand
Bonjour tous !
Bonjour M. Ferrand
Cela fonctionne parfaitement dans le fichier joint, mais lorsque je recopie la feuille « Politique Internationale » avec ton code dans le Worksheet de la feuille, la valeur que j’inscris dans la colonne D dans n’importe quelle entreprise ou groupe, s’efface quand je valide, mais n’est pas ajoutée à ma feuille « Achat(s) », je ne peux pas remplacer cette feuille de mon fichier.
La plage A1 à T4 est absolument identique, dois-je changer autre choses ?
Merci !
Se serais dommage c’est impeccable !
Philippe
Bonjour,
Suis pas bien réveillé, mon message s'est perdu... Par contre ton fichier n'ayant pas de feuille 'Politique internationale', je ne verrai rien !
Si ça s'efface, normal, s'est que la macro s'est exécutée, sans erreur. Je vois pour ajouter une confirmation, mais joins un classeur où se présente le problème.
A+
Ferrand
Re,
A substituer à la macro initiale.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim e, p, i%, mc$
On Error GoTo errnombre
If Target.Column = 4 And Target.Value <> 0 Then
If Target.Offset(0, -1).Value <> "" Then
p = Target.Value
e = Split(Target.Offset(0, -1).Value)
For i = 0 To UBound(e)
With Worksheets("Achat(s)").Range(e(i))
.Value = .Value + p
mc = Chr(10) & "Valeur " & .Offset(0, -1).Value & " = " & .Value
End With
Next i
mc = "Exécuté :" & mc
MsgBox mc, vbInformation, "Confirmation d'opération"
Else
MsgBox "Pas de cible pour la modification.", vbInformation, "Erreur de saisie"
End If
Target.ClearContents
End If
Exit Sub
errnombre:
If mc <> "" Then
mc = "Exécuté :" & mc & Chr(10) & "Une erreur a interrompu l'opération. Vérifier " _
& "que la valeur à modifier est bien numérique."
Else
mc = "Une erreur est survenue. Vérifier que les valeurs source et cible de la modification" _
& " sont bien des valeurs numériques."
End If
MsgBox mc, vbInformation, "Erreur inopinée"
End SubCela devrait verrouiller l'affaire et apporter des éclaircissements. Un message de confirmation des modifications effectuées.
Si saisie sur une ligne sans adresse cible, un message le signale.
Un gestionnaire d'erreur pour ce qui provoquerait des erreurs d'exécution (saisie d'autre chose qu'un nombre ou la valeur à modifier n'est plus un nombre), et si l'erreur intervient après début d'exécution partielle, signalisation de ce qui a été exécuté.
Cordialement
Ferrand
Bonjour tous !
Bonjour monsieur Ferrand.
N’y aurait-il pas une solution pour que je puisse vous transmettre le fichier en entier (10 Mo) ?
Merci de tout cœur !
Philippe.