Ajouter et bloquer une valeur dynamique sur excel
Résolu
amandinep38
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
amandinep38 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
amandinep38 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
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
A voir également:
- Ajouter et bloquer une valeur dynamique sur excel
- Word et excel gratuit - Guide
- Tableau croisé dynamique excel exemple - Guide
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Si et excel - Guide
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
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
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
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
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 ceci
tu colles ceci
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
Il ne te reste qu'à ajouter le code
1. Alt-F11 pour accéder à l'editeur vba
2. tu colles ceci
Option Explicit3. 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 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
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)
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
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
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.