Ajout valeur cellule si non trouvé dans liste
Bonjour à tous,
Je recherche une solution à travers des formules, je ne maitrise pas le VBA. Ce n'est peut être pas possible !?
Plusieurs personnes travaillent sur différents fichiers basés sur la même structure.
Un fichier résume l'ensemble des fichiers et doit prendre en compte les ajouts (et modifications...).
Si ID trouvé dans le fichier résumé rien à faire, sinon ajouter le nouvel ID
Si ID effacé dans un des fichier, ne pas l'effacer dans le fichier résumé.
En d'autres termes, lié au fichier exemple :
id 1237 (A2 onglet FICHIER 1) doit s'ajouter dans la première cellule libre (A5 onglet FICHIER RESUME)
si ligne 3 disparait (de l'onglet FICHIER 1, ID 1236), il doit demeurer dans le FICHIER RESUME.
J'espère être claire.
Je vous remercie de m'avoir lu et pour votre aide.
Belle journée à vous.
Sincèrement,
Hannah
Bonjour,
Essayez ceci
Cdlt
bonjour
c'est impossible par formules , car il n'y a pas de fonctions qui copient ,, on peut importer mais pas "fixer"
cordialement
Bonjour Arturo et Tulipe,
Merci pour vos retours.
Tulipe, c'est bien ce que je craignais...
Arturo, c'est super et parfait... merci ; Je vais tenter de creuser pour l'adapter au fichier réel. Désolée de ne réagir qu'aujourd'hui, mais le mac que j'avais avec ce week-end, ne prenait pas en charge ton fichier, lequel fonctionne parfaitement sur le PC de mon travail, où finalement, c'est là que j'en ai besoin. Merci pour ta réactivité
Je vous souhaite une excellente semaine et merci encore.
Sincèrement,
Hannah
Bonjour Arturo,
J'espère que vous lirez mon message.
Votre code, bien entendu, comme déjà fonctionne parfaitement ; j'ai besoin de + :
si je change une donnée dans la colonne "info", il faudrait que le changement soit prise en compte.:
est ce que dans votre code, d1, d2 et d3 correspondent aux 3 colonnes ? si non, comment faire pour qu'il prenne en compte une 4è, 5è colonne...
J'espère ne pas trop abuser de votre générosité.
Quoiqu'il en soit, je vous remercie et vous souhaite une agréable soirée.
Sincèrement,
Hannah
Bonjour,
Non, d1,d2 et d3 ne correspondent pas à des colonnes , c'est ce qu'on appelle des dictionnaires, en fait on enregistre en mémoire (d1,d2 et d3) des listes que l'on va comparer par la suite et les restituer à la fin.
Pour je puisse mieux vous comprendre, déposez un nouveau fichier avec les colonnes supplémentaires (combien de colonnes maxi ?) et expliquez bien ce que vous attendez en retour.
Cdlt
Bonjour Arturo,
Je vous remercie pour votre prompt réponse.
En effet, le projet est plus vaste mais revient, il me semble à l'exemple que je remets en pièce jointe qui comprend le code que vous avez créée.
Je pars d'un tableau A de 23 onglets ; 22 onglets alimentent le 23ème, lequel ne contient que des formules. Ce 23ème est un tableau de 134 colonnes et 23000 lignes, dont une des colonnes est un identifiant (format alphanumérique obtenu par formule basé sur 2 autres colonnes (nomprenom, date de naissance)).
Les données du tableau sont amenées à changer quotidiennement, soit par la modification de données, soit par la suppression d'une ligne ou l'ajout d'une ligne.
Un tableau B (l'équivalent de l'onglet fichier resume de l'ex. en pièce jointe) va être construit avec une partie des données (des colonnes entières) et d'autres données seront ajoutées. Ce tableau B doit garder l'historique : si un nouvel identifiant apparait en A, il est automatiquement copié en B (avec toutes les autres données nécessaires de la ligne) ; si une ligne est supprimée dans le tableau A, elle doit rester dans le tableau B, d'où le code VBA que vous m'avez proposé. Le tableau B a 41 colonnes pour, actuellement 3700 lignes.
La solution que j'ai trouvé est : une fonction recherche v qui compare, une fois par jour les identifiants des tableaux A et B : ceux qui n'apparaissent plus entrainent le passage à 0 au lieu de 1 dans une colonne du tableau B, manuellement ; ceux qui sont nouveaux, sont copiés en bloc après un tri de A vers B.
Pour ce qui est du VBA, j'en suis aux balbutiements, mais je vais tenter de m'accrocher pour maitriser ce langage. Si vous avez un livre (ou plusieurs) ou un site à me conseiller, je suis preneuse.
J'espère avoir été claire et je vous remercie pour l'intérêt que vous portez à ma demande.
Je vous souhaite une agréable journée.
Avec toute ma sincère gratitude.
Hannah
Bonjour,
Le fichier que vous avez déposé n'est en rien représentatif de ce que vous décrivez, il y a quelques lignes en plus par rapport au fichier initial et c'est tout.
Vous citez des tableaux A et B, avec des onglets dont 23 uniquement pour le tableau A. Désolé mais vous ne devez pas employer les bons termes,
Les onglets de feuille (au bas de la feuille de calcul) permettent de nommer chaque feuille, ce qui facilite le déplacement d'une feuille à l'autre. Alors comment un tableau, qui est un ensemble de cellules d'une feuille, peut-il contenir des onglets?
De plus, quels sont les tableaux que vous nommez A et B?
Quand vous faites une demande, le fichier que vous fournissez doit être au plus près de la réalité (inutile de mettre le fichier intégral, une dizaine de colonnes et une dizaine de lignes suffisent et sans données confidentielles), et surtout montrer le résultat attendu, car ce qui paraît clair pour vous ne l'est pas forcément pour celui qui vous lit.
Pensez que le fichier initial à été traité il y a un mois, et que depuis, je suis intervenu sur plusieurs d'autres demandes, d'où la difficulté de me replonger dans ce qui est classé et résolu.
En attente de vous lire.
Cdlt
Bonjour Arturo, bonjour à tous,
Je suis désolée pour mon manque de précisions et d'acuité.
J'ai préparé des fichiers les plus parlant possibles et cette fois proche de la réalité, mais je n'ai pu les transférer sur le site : trop lourd ; un lien vers un site de transfert n'est pas accepté ; j'ai compressé mais le format de compression a été refusé également par le site.
Je vous remercie pour votre réponse et patience ; je ne peux que, malheureusement, en rester là.
Je vous souhaite bonne continuation dans tous vos projets.
Sincèrement,
Hannah
Bonjour,
J'ai bien précisé qu'il fallait un fichier allégé(quelques lignes et quelques colonnes suffisent), juste pour me permettre d'avoir un support sur lequel me baser.
Si vous faites un fichier tel que je le réclame, je devrais pouvoir vous satisfaire.
Cdlt
Bonjour Arturo,
Merci pour votre retour.
En pièce jointe, 2 mini fichiers... J'ai supprimé beaucoup de lignes (10000/20000 lignes), 16 feuilles dans le fichier generale2. J'espère que cela sera suffisant.
Je reste naturellement à votre écoute pour toutes informations complémentaires et vous remercie pour votre attention.
Sincèrement,
Hannah
Bonjour,
Voilà, essayez ceci:
Cdlt
Bonjour de nouveau Arturo,
Quelle rapidité ! merci.
Les quelques essais que j'ai fait font apparaitre des doublons dans la feuille base générale.
Je joints le fichier.
Belle fin de journée à vous,
Hannah
Bonsoir,
Le problème vient du fait que je me suis basé sur les valeurs de la colonne A pour faire les comparaisons, or celle-ci étant pratiquement vide, le test de comparaison effectué ne voit pas de correspondance entre le contenu d'un cellule avec un nom et une cellule vide, pour le test, il y a discordance, donc il copie à nouveau le nom.
ceci est donc résolu:
Cdlt
Bonjour Arturo,
J'ai sincèrement beaucoup de reconnaissance pour votre travail et promptitude tout autant que pour votre altruisme.
Cela se résume en 1 mot finalement : merci.
Sincèrement et humblement,
Hannah
Bonjour à nouveau,
Cependant, cette nouvelle version a fait disparaitre la fonction de garder toutes les données dans la feuille base générale. Quand je supprime une ligne, la personne disparait dans base générale et je souhaiterais qu'elle reste ; Aussi, si je change une donnée dans la ligne (hors nom et date de naissance), les nouvelles données ne sont pas toujours prises en compte dans la feuille base générale ; la nouvelle donnée entraine aussi parfois l'ajout d'une nouvelle ligne avec le même id.
Exemple pas à pas :
feuille Antwerp, Ayers, je change en info1 green en blue ; je sauvegarde ; feuille base générale, clic sur le bouton ; Ayers apparait deux fois ; la seconde fois la formule de la colonne A n'est pas reprise ; et j'ai deux fois green ; pas de blue ; si j'ajoute en info 2, sur la même personne, Dodge ; sauvegarde du fichier ; je clic sur le bouton ; la prise en compte, là ne s'est pas faite ; dans d'autres feuille cela a été pris en compte...
Voilà pour mon retour;
Meric,
Hannah
Bonjour,
Avant de traiter toutes vos remarques, je viens de constater une anomalie concernant la création des Id (Nom + Date), en effet dans la feuille "Base générale, de par la formule de concaténation, vous avez supprimé l'espace entre le nom et le prénom,
exemple:
dans la feuille "Base générale "RajveerAyers39548" et dans la feuille "Antwerp" "Rajveer Ayers39548"
ce qui est vu comme deux valeurs différentes. Commencez par corriger cette différence, je regarderai le reste dans la journée (en fonction de mes disponibilités).
Cdlt
Bonjour,
Hormis ce que j'ai précisé dans le dernier post, ce que vous demandez ne colle plus avec la demande initiale qui je le rappelle, stipulait ceci:
Si ID trouvé dans le fichier résumé rien à faire, sinon ajouter le nouvel ID
Si ID effacé dans un des fichier, ne pas l'effacer dans le fichier résumé.
Ma proposition respecte cela à la lettre, si un ID n'existe pas dans "Base générale", ce dernier est bien ajouté avec toutes les infos le concernant, et si je supprime une ligne entière d'un ID dans une des autres feuilles, ce dernier n'est pas effacé de la "base générale".
Or maintenant, vous m'annoncez que, lorsque vous changez une information pour un Id existant dans une des feuilles autre que "Base générale", cette dernière information n'est pas prise en compte, ce qui est tout à fait normal puisque l'ID n'a pas changé. S'il faut contrôler et comparer toutes les informations des 134 colonnes au lieu de comparer uniquement la présence ou non de l'iD, ce n'est plus la même chose. Dans ce cas, il faudrait concaténer toutes les cellules des 134 colonnes de toutes les feuilles et effectuer la comparaison sur cette concaténation et non plus uniquement sur l'ID, mais est-ce bien ce que vous voulez exactement?
De plus, en partant de cette idée, j'ai constaté que toutes les cellules apparemment vides de la feuilles "Base générale" ne le sont pas vraiment, elles contiennent toutes la valeur 0, alors que celles des autres feuilles sont réellement vides, d'où cela faussera les comparaisons des différentes concaténations. Question, peut-on supprimer tous ces 0 inutiles dans la feuille "Base générale".
Cdlt
Bonjour Arturo,
Merci pour votre retour.
Oui, vous avez parfaitement répondu à la demande initiale que j'avais amendé dans un message plus récent:
"si je change une donnée dans la colonne "info", il faudrait que le changement soit prise en compte.:" (05/05)
"Les données du tableau sont amenées à changer quotidiennement, soit par la modification de données, soit par la suppression d'une ligne ou l'ajout d'une ligne."(05/05)
L'idée de l'ID unique et de le garder de manière permanente, est de gérer l'ensemble des fichiers à partir de cet élément qui lui est constant.
Ce n'est pas grave, je vous suis reconnaissante pour ce que vous avez fait et je ne remets surtout pas en question de votre travail, précieux. C'est moi qui à un moment me suis mal exprimée.
Je vous remercie et vous souhaite une excellente fin de journée.
Sincèrement,
Hannah
Ok, mais je compte 82 colonnes "infos", qu'en est-il exactement, on ne surveille que la colonne "Info1" ou bien les 82 colonnes "Info" ?