Ajouter et bloquer une valeur dynamique sur excel

Résolu/Fermé
amandinep38 Messages postés 8 Date d'inscription mardi 4 octobre 2016 Statut Membre Dernière intervention 7 octobre 2016 - 4 oct. 2016 à 16:58
amandinep38 Messages postés 8 Date d'inscription mardi 4 octobre 2016 Statut Membre Dernière intervention 7 octobre 2016 - 7 oct. 2016 à 09:59
Bonjour à tous,

Je souhaite récupérer des valeurs d'un autre onglet en fonction des dates.
Les données à récupérer ont été automatisées et sont donc dynamiques.

Je m'explique en exemple :

- Onglet 1 : Date du 01/10/2016 au 31/10/2016 / Fruits (à compléter avec formule) / Quantité de fruits (à compléter avec formule)

- Onglet 2 : Date du jour (la date étant dynamique les données se mettent à jour tous les jours et elles sont donc différentes d'un jour à l'autre) >> 04/10/2016 / fruit : pomme / quantité : 26

et pour exemple les données de demain pourraient être : date : 05/10/2016 / fruit : banane / quantité : 17

J'ai donc besoin de récupérer dans mon onglet 1 les données pour le 04/10/2016 et qu'elles soient bloquées pour ne pas être écrasées avec les données du 05/10/2016.

J'espère avoir été suffisamment claire dans ma question.
Si c'est possible, ne maitrisant pas du tout les VBA, une formule, même si complexe, serait la bienvenue :).

Je vous remercie mille fois par avance,

Bonne journée à tous.

Amandine

A voir également:

6 réponses

ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
4 oct. 2016 à 18:58
Bonjour

J'ai bien peur que vba soit incontournable, mais pour en être sûr, peux tu envoyer un bout de ton fichier, sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu

1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse
tu fais "Coller".

Cdlmnt
0
amandinep38 Messages postés 8 Date d'inscription mardi 4 octobre 2016 Statut Membre Dernière intervention 7 octobre 2016
4 oct. 2016 à 19:14
Merci @ccm81 pour ton premier retour.
Voici le fichier : https://www.cjoint.com/c/FJerlHHmu7I

J'espère que le fichier est assez détaillé.
Je pense qu'il faut une logique d'insertion d'une nouvelle ligne à chaque fois, mais je n'arrive pas à trouver de réponses adéquates.

Encore merci.
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 4/10/2016 à 20:29
Je pense qu'il faut une logique d'insertion d'une nouvelle ligne à chaque fois
Faisable avec vba, mais tu devras intervenir d'une façon ou d'une autre (clic sur une cellule, clic sur un bouton) pour faire le transfert des données (date, fruit et quantité) depuis l'onglet 2 vers l'onglet 1 (Est ce que ça correspond à ce que tu attends ?

Cdlmnt
0
amandinep38 Messages postés 8 Date d'inscription mardi 4 octobre 2016 Statut Membre Dernière intervention 7 octobre 2016
5 oct. 2016 à 08:57
Dans l'idéal il faudrait que tous le fichier soit automatisé pour que personne de notre équipe n'ai à faire un manip à la mano pour la MAJ du fichier.

Mais s'il n'y a qu'un clic sur un bouton de MAJ à faire c'est pas pire :).

Tu as une idée ?
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
5 oct. 2016 à 11:15
Une idée
http://www.cjoint.com/c/FJfjoMCAOdq

Cdlmnt
0
amandinep38 Messages postés 8 Date d'inscription mardi 4 octobre 2016 Statut Membre Dernière intervention 7 octobre 2016
5 oct. 2016 à 11:49
Merci beaucoup pour ton retour.
Je suis désolée, mais je n'ai pas accès à tes macros. Le fichier s'ouvre en fichier seul et la partie macro est vierge. (bien entendu j'ai activé les macros en ouvrant le fichier).
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
5 oct. 2016 à 14:29
Depuis cjoint es tu passé par l'option Enreigstrer ? puis tu ouvres le fichier enregistré
0
amandinep38 Messages postés 8 Date d'inscription mardi 4 octobre 2016 Statut Membre Dernière intervention 7 octobre 2016
6 oct. 2016 à 08:47
Hello, dsl mais erreur 404 sur cjoint depuis hier aprèm. Pour info, j'ai bien enregistré dans mes fichiers le document puis je l'ai ouvert en activant les macros et ensuite ouverture en lecture seule.
0

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

Posez votre question
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 6/10/2016 à 15:15
Bon, si tu as le fichier c'est déjà quelque chose
Il ne te reste qu'à ajouter le code
1. Alt-F11 pour accéder à l'editeur vba
2. tu colles ceci
Option Explicit

Const FS = "onglet 2"
Const celcl = "D2"
Const celda = "A2"
Const celfr = "B2"
Const celqt = "C2"

Public Sub OK()
Dim q As Single, f As String, d As Date
If Range(celda).Value = "" Or Range(celfr).Value = "" Or Range(celqt).Value = "" Then Exit Sub
d = Range(celda).Value
f = Range(celfr).Value
q = Range(celqt).Value
Call maj(d, f, q)
Range(celda).Value = ""
Range(celfr).Value = ""
Range(celqt).Value = ""
End Sub
3. Insertion module (pour créer le Module 1)
tu colles ceci
Option Explicit

Const FB = "onglet 1"
Const codat = "A"
Const cofrt = "B"
Const coqte = "C"

Public Sub maj(d As Date, f As String, q As Single)
Dim li As Long
With Sheets(FB)
li = .Range(codat & Rows.Count).End(xlUp).Row + 1
.Range(codat & li).Value = d
.Range(cofrt & li).Value = f
.Range(coqte & li).Value = q
End With
End Sub

4. Retour dans la feuille (onglet 2)
Tu dessines une forme texte et tu y mets MAJ comme texte
Puis clic droit sur cette forme/Affecter une macro
et tu selectionnes OK
5. c'est tout (en principe) la macro OK transfère les données dans l'onglet 1 et les effaces de l'onglet 2

Cdlmnt
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
6 oct. 2016 à 15:19
Apparemment cjoint refonctionne > le fichier
https://www.cjoint.com/c/FJgns5jJZrq
0
amandinep38 Messages postés 8 Date d'inscription mardi 4 octobre 2016 Statut Membre Dernière intervention 7 octobre 2016
6 oct. 2016 à 16:16
Ok ! Excellent.

Merci beaucoup pour ton temps et ton aide précieuse.
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 6/10/2016 à 16:38
De rien

Tu peux faire plus simple en mettant tout le code dans Module 1 un peu modifié (tu supprimes ce qui est dans le module de l'onglet 2, en fait dans ma première version, j'avais mis un bouton ActiveX ce qui me faisait du code dans cet onglet 2)

Option Explicit

Const FS = "onglet 2"
Const celcl = "D2"
Const celda = "A2"
Const celfr = "B2"
Const celqt = "C2"

Const FB = "onglet 1"
Const codat = "A"
Const cofrt = "B"
Const coqte = "C"

Public Sub OK()
Dim q As Single, f As String, d As Date, li As Long
With Sheets(FS)
If .Range(celda).Value = "" Or .Range(celfr).Value = "" Or .Range(celqt).Value = "" Then Exit Sub
d = .Range(celda).Value
f = .Range(celfr).Value
q = .Range(celqt).Value
.Range(celda).Value = ""
.Range(celfr).Value = ""
.Range(celqt).Value = ""
End With
With Sheets(FB)
li = .Range(codat & Rows.Count).End(xlUp).Row + 1
.Range(codat & li).Value = d
.Range(cofrt & li).Value = f
.Range(coqte & li).Value = q
End With
End Sub

Si c'est fini, peux tu mettre le sujet à résolu (en dessous du titre de ton premier message)

Bonne fin d'après midi
0
amandinep38 Messages postés 8 Date d'inscription mardi 4 octobre 2016 Statut Membre Dernière intervention 7 octobre 2016
7 oct. 2016 à 08:35
C'est fait. Encore merci
0
amandinep38 Messages postés 8 Date d'inscription mardi 4 octobre 2016 Statut Membre Dernière intervention 7 octobre 2016
7 oct. 2016 à 09:59
Ca fonctionne parfaitement ! Mille merci c'est génial
0