Base de données

Bonsoir à tous,

J'ai créé une macro qui me permets d'enregistrer le contenu d'un masque de saisie dans une autre feuille en empilant les données au fur et à mesure. En bref une base des données.

J'ai utilisé dans ma macro la fonction for I = x to y blabla next i.

Cependant, dans mes enregistrements il y a des valeurs nulles et elles sont de ce fait non significatives. Ma question est: est-il possible de demander à ma macro d'ignorer ces enregistrements inutiles et bouffeurs de place ?

En cas de besoin, je peux mettre un fichier exemple à votre disposition..

Merci et bonne soirée

Salut,

blas a écrit :

Ma question est: est-il possible de demander à ma macro d'ignorer ces enregistrements inutiles et bouffeurs de place ?

Oui.

blas a écrit :

En cas de besoin, je peux mettre un fichier exemple à votre disposition..

Très volontiers

Cordialement.

Bonjour Yvouilles,

Merci pour ta réponse.

Voici le fichier exemple1 composé de 1 masque de saisie relié à un tableau "d'extraction" et une feuille de réception ..

Je ne suis pas vraiment un pro du VBA mais j'aime tâtonner et trouver des solutions quelques fois boiteuses certes mais c'est le résultat qui compte... Cette fois je sèche.

Merci pour ton aide

20exemple1.xlsm (25.47 Ko)

Salut,

Ta macro est vraiment du gros bricolage

Question 1 : Avant de me lancer dans un début d’aide, quelles sont les valeurs nulles que tu veux ignorer ; est-ce que ce sont les cellules de la plage D8:D26 de la feuille « Projets » (si la cellule de la colonne D est à zéro, on ignore la ligne) ?

Question 2 : Ensuite, pourquoi places-tu tes lignes 8 à 26 de la feuille « Projets » à l’envers sur la feuille « Base projets » ? Est-ce absolument nécessaire ?

Question 3 : Tu désires vraiment que les données nouvellement importées se trouvent au sommet du tableau ?

Question 4 : Pourquoi effaces-tu systématiquement la dernière ligne importée sur la feuille « Base projets » ?

Question 5 : Tes données de la plage S1:U4 de la feuille « Projets » te sont utiles pour d’autres choses ou uniquement comme aide aux macros ?

A te relire.

Yvouille a écrit :

Salut,

Ta macro est vraiment du gros bricolage

Entièrement d'accord...

Question 1 : Avant de me lancer dans un début d’aide, quelles sont les valeurs nulles que tu veux ignorer ; est-ce que ce sont les cellules de la plage D8:D26 de la feuille « Projets » (si la cellule de la colonne D est à zéro, on ignore la ligne) ?

C'est exactement cela. les valeurs nulles sont non significatives et n'entent pas en compte pour une analyse ulérieure.

Question 2 : Ensuite, pourquoi places-tu tes lignes 8 à 26 de la feuille « Projets » à l’envers sur la feuille « Base projets » ? Est-ce absolument nécessaire ?

Non pas du tout

Question 3 : Tu désires vraiment que les données nouvellement importées se trouvent au sommet du tableau ?

Non

Question 4 : Pourquoi effaces-tu systématiquement la dernière ligne importée sur la feuille « Base projets » ?

C'est une erreur que j'aurais déjà du corriger...

Question 5 : Tes données de la plage S1:U4 de la feuille « Projets » te sont utiles pour d’autres choses ou uniquement comme aide aux macros ?

Les cellules de S2à S4 sont utilisées pour la validation de la cellule B3.

La cellule U2 calcule le nombre d'éléments encodés et me permets de lancer l'enregistrement (voir macrotestc())

A te relire.

Merci

blas a écrit :

Merci

Je t'en prie

Et les réponses à mes questions

Salut,

Ta macro est vraiment du gros bricolage

Entièrement d'accord...

Question 1 : Avant de me lancer dans un début d’aide, quelles sont les valeurs nulles que tu veux ignorer ; est-ce que ce sont les cellules de la plage D8:D26 de la feuille « Projets » (si la cellule de la colonne D est à zéro, on ignore la ligne) ?

C'est exactement cela. les valeurs nulles sont non significatives et n'entent pas en compte pour une analyse ulérieure.

Question 2 : Ensuite, pourquoi places-tu tes lignes 8 à 26 de la feuille « Projets » à l’envers sur la feuille « Base projets » ? Est-ce absolument nécessaire ?

Non pas du tout

Question 3 : Tu désires vraiment que les données nouvellement importées se trouvent au sommet du tableau ?

Non

Question 4 : Pourquoi effaces-tu systématiquement la dernière ligne importée sur la feuille « Base projets » ?

C'est une erreur que j'aurais déjà du corriger...

Question 5 : Tes données de la plage S1:U4 de la feuille « Projets » te sont utiles pour d’autres choses ou uniquement comme aide aux macros ?

Les cellules de S2à S4 sont utilisées pour la validation de la cellule B3.

La cellule U2 calcule le nombre d'éléments encodés et me permets de lancer l'enregistrement (voir macrotestc())

A te relire.


Et encore merci...

Salut,

Dans le fichier ci-joint, j’ai placé une macro (simplifiée) qui devrait répondre à ton attente.

J’ai supprimé également la plage S1:U4.

blas a écrit :

Les cellules de S2à S4 sont utilisées pour la validation de la cellule B3.

On peut s’en passer. Regarde la nouvelle « Validation des données » de la cellule B3.
blas a écrit :

La cellule U2 calcule le nombre d'éléments encodés et me permets de lancer l'enregistrement (voir macrotestc())

J’ai placé ce contrôle directement dans la macro.

La formule de la cellule U3 a été déplacée dans la cellule H38, seul endroit où est utilisé ce calcul.

Ton projet est assez complexe et il est possible que je n’ai pas remplacé l’une ou l’autre de tes fonctionnalités. Merci de m’indiquer alors lesquelles et je vais tenter de corriger les problèmes.

Amicalement.

20exemple1-v2.xlsm (27.48 Ko)

Bonsoir Yvouille,

Ben euh... Ça ne fonctionne pas... seule la ligne 8 est transférée dans la base de donnée... le reste... reste!

Peux-tu tester de ton côté.. J'ai téléchargé plusieurs fois le fichier pour être sûr que ce n'était pas mon matériel qui flanchait...

Bonne soirée

Blas

bonjour à vous

suggestion : ne vaut-il pas mieux garder la macro d'origine qui empile des lignes de zéros, puis "nettoyer" les lignes contenant les zéros ? (au besoin avec une autre macro, assez simple)

mieux vaut 2 macros simples

Bonjour à tous,

blas a écrit :

Peux-tu tester de ton côté

Euh, ben j’ai quand même testé mon fichier avant de te le proposer

Admettons que tu ouvres le fichier tel qu’il t’es fourni et que tu indiques un nombre d’heures en B8, en B10 et en B15 et que tu cliques sur le bouton en place, tu auras le résultat ci-dessous sur ta feuille « BASE PROJET », c’est-à-dire que les lignes 20 à 22 sont nouvellement reportées à la suite de la ligne 19 déjà en place. N’est-ce pas ce que tu demandais ?

capture
blas a écrit :

Ça ne fonctionne pas... seule la ligne 8 est transférée dans la base de donnée... le reste... reste!

Peux-tu me dire exactement comment tu as préparé la feuille « PROJETS » pour arriver à ce résultat ?

Amicalement.

EDIT : Salut jmd,

Tu prétends qu’il vaut mieux 2 macros simples, donc j’en déduis que tu trouves ma macro compliquée par rapport à celle d’origine ? Je peux alors t’assurer que je ne te comprends pas ! La macro de base est un vrai embrouillamini et elle ne fonctionne pas – selon l’aveu même de son créateur – correctement. As-tu seulement jeté un coup d’œil à ma macro avant de poster ?

Bonsoir à vous,

Dans mon fichier de base ma macro enregistrait bien mes données dans "base projet". je désirais uniquement ne pas enregistrer les valeurs nulles de la colonne D de ma feuille "projet". Nous sommes bien d'accord.

L'idée de nettoyer les lignes "non significatives" de "base projet" m'est bien venue mais même si c'est une macro simple, , j'ai séché.. Mais je ne désespère pas...

Yvouille ,loin de moi de mettre en doute le fait que tu l'aie testée mais j'ai fait exactement ce tu me demandes de faire et la macro n'enregistre malgré tout chez moi que la ligne 8.. et je n'ai rien modifié. !!!

Ci joint le fichier que j'ai enregistré dans une version3

Bonne fin de soirée...


Merci Jmd.

10exemple1-v3.xlsm (26.02 Ko)
Yvouille a écrit :

Bonjour à tous,

EDIT : Salut jmd,

Tu prétends qu’il vaut mieux 2 macros simples, donc j’en déduis que tu trouves ma macro compliquée par rapport à celle d’origine ? Je peux alors t’assurer que je ne te comprends pas ! La macro de base est un vrai embrouillamini et elle ne fonctionne pas – selon l’aveu même de son créateur – correctement. As-tu seulement jeté un coup d’œil à ma macro avant de poster ?

salut Yvouille

je croyais que la macro d'origine, bien que laissant des blancs, fonctionnait. Il suffisait donc de créer une macro de "nettoyage". Ce qui a justifié mon message.

Note que la "simplicité" d'un développement est toujours relatif aux compétences du développeur. Tant pour des macros que pour des formules.

Ajoute que je suis nul en macros, et que je préfère les formules développées en 200 signes plutôt que les formules compactes de 30 signes, tu comprends mieux ma suggestion

bonne journée à toi et à tous

bon dev

amitiés excelliennes

Salut Blas,

Je pense que j'ai parfaitement compris ton souhait et je t'ai montré par des copies d'écran du résultat obtenu avec mon fichier de base – réalisé sur mon PC privé – qu'il devrait correspondre à ton attente.

Je suis actuellement au travail et j'ai jeté un coup d'œil rapide aux différents fichiers placés sur Internet. Je constate alors avec stupeur qu'il y a quelque chose qui cloche.

C'est totalement incompréhensible car si je prends par exemple ton chier V3 et que je fais dérouler la macro entièrement au pas-à-pas par la touche F8, ça fonctionne parfaitement, alors que si je lance la macro par le bouton en place, ça ne réalise qu'une partie du code !!!!

Je n'ai jamais vu un tel problème et n'ai pas de solution pour l'instant. Je vais tenter de chercher durant le weekend.

De ton côté, pourrais-tu tester ma macro – éventuellement sur mon fichier V2 – au pas-à-pas ?

Cordialement.

Bonjour,

Ok je vais faire ça. Est-ce que le fait que ma feuille base projet soit sous forme de tableau pourrait avoir une incidence..?

Bonne journée et merci.

Ce n'est pas exclu que le tableau de ta feuille ''Base projet" crée des problèmes, mais à première vue absolument pas puisque mes premiers essais étaient concluants (sur la copie d'écran envoyée hier soir, tu vois – par le petit triangle noir tout au fond à droite de la dernière cellule du tableau - que les trois lignes 20 à 22 sont incluses à celui-ci).

Comme indiqué, effectue tes essais pas-à-pas sur ton fichier et je revois mon fichier à la maison durant cette fin de semaine.

Amicalement.

Re-bonjour,

Je pensais que ton projet te tenait à cœur et que tu testerais mon fichier au pas-à-pas durant cette fin de semaine.

De mon côté j’ai téléchargé à nouveau mon fichier V2 depuis le Forum ainsi que ton fichier V3 et tous deux fonctionnent parfaitement sur mon PC privé. A nouveau c’est à n’y rien comprendre et je ne sais pas trop comment t’aider à corriger un code qui fonctionne !!

J’ai tenté de demander à un autre membre de mes amis s’il avait une idée ; à voir si j’obtiens une réponse de sa part.

Je ne sais trop que faire de plus !! Je vais bien tenter de revoir le problème demain sur mon PC professionnel, mais sans grande perspective de succès, vu que je ne comprends pas ce qui ne joue pas sur certain PC !

Amicalement.

Bonjour,

Je l'ai fait mais j'ai eu quelques problèmes avec mon pc portable... C'est vrai que c'est assez étonnant comme situation. J'ai eu l'occasion de croiser des informaticiens à qui j'ai posé la question.. Le problème c'est que pour eux vba c'est pour les dinosaures..

J'ai également tenté de reconvertir le tableau en plage sans résultat..

En tout cas merci de faire des recherches.

Peut-être bien que si j'étais incapable d'utiliser VBA, je tenterais de m'en sortir en disant que c'est pour les dinosaures.

Et que te proposent-ils à la place ?

Ils ne m'ont rien proposé...


J'ai repensé à l'idée de JMD. si je tentais d'écrire une macro pour fac les lignes à "0" pourrais-je te la soumettre pour avoir ton avis. Pour moi comme je l'ai dit au tout début, c'est le résultat qui compte...

mais pas avant demain soir...

Bonne soirée

Rechercher des sujets similaires à "base donnees"