Ajouter et bloquer une valeur dynamique sur excel
Résolu
amandinep38
Messages postés
8
Statut
Membre
-
amandinep38 Messages postés 8 Statut Membre -
amandinep38 Messages postés 8 Statut Membre -
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
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
6 réponses
-
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-
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.
-
-
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 -
-
Depuis cjoint es tu passé par l'option Enreigstrer ? puis tu ouvres le fichier enregistré
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 ceciOption Explicit
3. Insertion module (pour créer le Module 1)
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
tu colles ceciOption 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-
Apparemment cjoint refonctionne > le fichier
https://www.cjoint.com/c/FJgns5jJZrq -
-
-
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