Forum Replies Created
-
AuthorPosts
-
Marc
ParticipantBonjour,
Pourriez-vous joindre un fichier pour que ce soit plus parlant ?
25 November 2014 at 14 h 38 min in reply to: Concevoir une liste d'éléments uniques à partir d'un tableau #17504Marc
ParticipantBonjour,
Peut-être en utilisant les tableaux croisés dynamiques (cf fichier ci-joint).
Attachments:
You must be logged in to view attached files.Marc
ParticipantBonsoir Maths,
Je ne sais pas comment réaliser ce que vous voulez faire, mais je voulais juste vous signaler que dans le filtre chronologique, il est possible de sélectionner plusieurs mois : vous cliquez sur janvier par exemple, puis sur Maj et sur le mois d’octobre par exemple. Le TCD affiche alors tous les mois de janvier à octobre et le total affiche le cumul de la période.
Je ne sais pas si cela répond à votre besoin.Marc
ParticipantBonjour,
Non la date n’est pas au format date, il faudrait encore travailler le contenu de cette colonne qui n’est pas uniforme.
D’autres solutions pour résoudre ce problème ?Marc
ParticipantIl semble bien qu’Excel fasse la somme de chaque colonne avant de d’appliquer la formule pour le calcul du total.
La solution consiste à créer dans le tableau des données sources une nouvelle colonne contenant la formule et de l’intégrer au TCD.Attachments:
You must be logged in to view attached files.Marc
ParticipantBonjour,
On dirait qu’il fat le calcul suivant : Somme des montants * somme des taux * somme (date de sortie – date d’entrée) / 360.
Marc
ParticipantBonjour,
Ce n’est peut être pas la meilleure solution, mais voici ma démarche :
– je recherche dans un premier temps si le nom de famille de la personne se trouve dans l’onglet des nouveaux pré-inscrits (fonction ESTERREUR(RECHERCHE(…))).
– s’il y a une erreur (le nom de famille ne se trouve pas dans les nouveaux pré-inscrits), le signe “-” est affiché
– s’il n’y a pas d’erreur, (le nom de famille se trouve dans les nouveaux pré-inscrits), je divise les 30 € par le nombre de personne de la famille (foncton NB.SI(…)), car la réduction est de 30 € maximum pour la famille => la réduction est répartie sur chaque membre de la famille.Mais je me rends compte que de considérer toutes les personnes ayant le même nom sont d’une même famille est peut-être trop simplificateur : il faudrait peut être également prendre en compte l’adresse ?
Marc
ParticipantJe n’avais pas géré les remboursements de 30 €.
Voici une nouvelle version.Attachments:
You must be logged in to view attached files.Marc
ParticipantBonjour,
Dans le fichier ci-joint, j’ai ajouté les formules dans les colonnes K et L de la feuille “Feuil3”.
Les paramètres tarif et réduction ont également été ajoutés.J’espère avoir bien compris la demande.
Pour le mini tennis, n’y a-t-il pas une erreur dans la consigne, ce ne serait pas plutôt entre 2009 et 2011 ?
Attachments:
You must be logged in to view attached files.Marc
ParticipantBonjour,
Je me lance, un exemple dans le fichier ci-joint.
Attachments:
You must be logged in to view attached files.Marc
ParticipantBonjour,
Sans passer par Powerpivot, il est possible de créer et lier des tableaux. Voici une méthode, en reprenant le même exemple :
– Création d’une feuille “Région”, avec le titre et les 4 valeurs A, B, C, D.
– Sélectionner ces 5 valeurs et cliquer sur “Mettre sous forme de tableau” dans le menu “Accueil” ou sur “Tableau” dans le menu “Insertion”
– On peut renommer le tableau pour que ce soit plus parlant : après avoir sélectionner le tableau, dans le menu “Création”, personnaliser le “nom du tableau” par “Région” par exemple.On peut ensuite créer les tableaux Vente et Frais de la même façon.
La prochaine étape consiste à lier ces 3 tableaux :
– dans le menu “Données”, cliquer sur “Relations”, puis “Nouveau…”
– on sélectionne la table “Région” et la colonne “Région”, et la table “Frais” et la colonne “Région” et on valide
– créer de la même façon la relation entre Région et VenteEn insérant un tableau croisé dynamique avec l’un des tableaux créés, vous pouvez alors sélectionner “PLUS DE TABLES…” dans la partie Champs de tableau croisé dynamique et ainsi retrouver toutes les tables que vous avez créées.
Marc
ParticipantBonjour,
Vous trouverez un exemple ci-joint qui pourra peut être vous aider.
Pour créer ce fichier, voici le cheminement :
1. Création d’un fichier avec 4 feuilles :
– une feuille Région
– une feuille Année
– une feuille Ventes (par région et par année)
– une feuille Frais (par région et par année)2. Dans l’onglet “Powerpivot”, choix de l’option “Ajouter au modèle de données” pour chacune des 4 tables (Région, Année, Ventes et Frais)
3. Lorsque les 4 tables sont ajoutées au modèle, création des liens entre les tables : dans la fenêtre Powerpivot, dans l’onglet “Conception”, choix de l’option “Gérer les relations” et création des relations entre
– Ventes et Région
– Ventes et Année
– Frais et Région
– Frais et Année4. Dans la fenêtre Powerpivot, dans l’onglet “Accueil”, choix de l’option “Tableau croisé dynamique”, dans une nouvelle feuille par exemple et création du TCD avec les colonnes souhaitées.
Attachments:
You must be logged in to view attached files.Marc
ParticipantEffectivement, en rajoutant l’instruction “On Erreur Go To Erreur”, en cas de plantage, la macro ne s’arrête pas et les événements vont être réactivés.
On peut faire le test en changeant la ligne “Cells(Target.Row, Target.Column + 3)= …” : en mettant -3 au lieu de +3. Si on modifie une cellule de la première colonne, le traitement plante, car la colonne -2 n’existe pas.
Avec l’instruction “On erreur…”, le traitement ne s’arrête plus et à la saisie suivante, la macro continue à s’exécuter.
Marc
ParticipantBonjour,
Concernant votre remarque “ça ne fonctionne plus et je dois fermer et rouvrir Excel” :
Dans le code VBA, les instructions “Application.EnableEvents = False” (désactivation des événements) et “Application.EnableEvents = True” (réactivation des événements) ont été rajoutées. En effet, si nous ne l’avions pas fait, en saisissant un taux < à 50 % dans une première cellule, la macro aurait collé cette valeur dans une seconde cellule. Mais comme cette seconde cellule est alors également modifiée, la macro aurait collé la valeur de la seconde cellule dans une troisième cellule… La macro serait rentrée dans une boucle infinie.
Lorsque vous avez eu un plantage (le debogueur s’étant ouvert), je pense que le plantage s’est produit entre ces deux instructions. Les événements ont été désactivés, mais n’ont pas dû être réactivés (traitement de la macro s’étant s’arrêté avant d’arriver à l’instruction “Application.EnableEvents = True”).
Ainsi, même en réinitialisant la macro après le bug, la feuille excel ne va plus détecter les événements, du moins jusqu’à ce que Application.EnableEvents soit repassée à True. Pour corriger cela, il faut soit fermer et réouvrir excel, soit prévoir une macro de secours comportant uniquement cette instruction “Application.EnableEvents = True” (cette macro de secours devant être lancée à la main lorsqu’il y a un plantage).
En espérant avoir été clair 🙂
Marc
ParticipantBonjour,
Lorsque vous faites Enter, Tab ou un clic dans une autre cellule, ActiveCell correspond à la cellule dans laquelle vous êtes positionné et non plus celle ou la saisie a été effectuée.
Essayez de remplacer ActiveCell par Cells(Target.Row, Target.Column).
Par ailleurs il faut désactiver le Worksheet_Change avant de copier la valeur, sinon le traitement va rentrer dans une boucle infinie. Vous trouverez ci-dessous un exemple de code :
Application.EnableEvents = False
If Cells(Target.Row, Target.Column) > 0 And Cells(Target.Row, Target.Column) < 0.5 Then
Cells(Target.Row, Target.Column + 3) = Cells(Target.Row, Target.Column)
End If
Application.EnableEvents = True
-
AuthorPosts