Importer et exporter données avec formulaire

Je ne vois pas ce que tu veux faire !

Ta condition if me paraît très nébuleuse, je ne sais à quoi elle correspond mais je pense qu'il faudrait faire autrement, et en outre pas de End If donc une erreur en perspective.

wbMyWb n'est pas initialisée et l'ouverture du classeur a d'ailleurs disparue, autre erreur à attendre.

La dernière ligne avec .Range("E16:E18").Resize(i,j,k). est incohérente et déclenchera elle aussi une erreur. Comme ça s'interrompt je ne verrai pas les erreurs suivantes...

Ce que je veux faire je l'ai écris quelques messages plus haut, c'est à dire exporter des données (si les champs du formulaire sont bien remplis) et effacer l'importation au passage.

J'essaye des choses, de comprendre, d'avancer mais je bloque.

Je vois bien qu'il y a des erreurs, ça fait des heures que je n'ai que ça!

J'essaye de me servir de ton code mais je n y arrive pas.

Bref, j'y retourne...

Mon code, il faut s'en servir tel qu'il est écrit, ou bien indique précisément ce que tu veux modifier.

re à tous

exemple de présentation pour faciliter la suite (ça révolutionne pas la saisie )

ensuite, dans simgmamuxlsx, tu ouvres Power Query

l'import est paramétrable, et une fois paramétré, il suffit d'actualiser à chaque mise à jour.

si les fichiers "suivi pince" se cumulent dans un répertoire, tant mieux ! Power Query est conçu pour les lire et les concaténer , même s'il y en a 100 nouveaux par jour !

joins quelques sigmamu tels que tu les as, je te ferai la requête (facile car aucune programmation, le GUI étant très complet)

toujours pas de VBA, puisque tu gères des données.

bonne semaine

amitités

note https://www.youtube.com/watch?v=gwW2CDdvUUs

Ton code permet d'importer des données d'un tableau du fichier suivi vers le fichier source.

Moi, je souhaite faire l'inverse, je veux bien l'utiliser comme il est mais des modifications sont nécessaires.

Surtout que des données supplémentaires sont à transférer.

Cela est surement simple pour toi mais pas pour moi.

En gros :

1: S'assurer que les champs du formulaire sont bien remplis avant de permettre l'activation du bouton.

2: Prendre les 3 valeurs situées en E16:E18,de la feuille "sigma mu"

3: les transférer dans le tableau suivi dans les colonnes "mesure1", "mesure2" et "mesure3" à la suite de celles déjà renseignées.

4: Prendre la date renseignée en H15 (sigma mu) et la transférer dans le tableau suivi dans la colonne "A" à la suite des autres.

5: Prendre le "Z" situé en D22, le "Zthéo" en D23, Le "Test" en D24, le "F", "Fthéo" et "Test" situés en D32, D33 et D34 ---> à transférer dans les colonnes E à J du fichier suivi (à la suite des autres).

6: Prendre les états des checkboxs situés de K18 à K23 et les transférer sur la feuille 2 (colonne C13 à C18)

7: Effacer les données du fichier sigma mu (en particulier les données de la colonne G qui viennent de l'importation)

8: Le transfert doit se faire sans que l'on bascule sur le fichier suivi, il faut garder la main sur le fichier sigma mu.

Tout ceci afin de remplir une ligne complète de la feuille du fichier suivi et au passage pour commencer à compléter la feuille 2.

A la prochaine exportation, la ligne du dessous doit se compléter etc.

J'espère être clair, ce n'est pas simple à expliquer.

re

plus tu en parles, plus il est évident que c'est un job pour Power Query

as-tu une idée de ce qu'est PQuery ? si non, alors il FAUT que tu apprennes cette fonction, aussi indispensable que l"addition

par exemple, le tuto va bien plus loin que ton besoin

https://www.youtube.com/watch?v=mVqIJ4wCn8E

Bon sérieux jmd,

Je pense t'avoir déjà répondu à ce sujet...

Mon problème concerne le VBA, j'apprécie ton intervention mais si elle peut être plus constructive ce serait pas du luxe.

Aide moi pour mon problème et après je te promets de me mettre au Power Query.

Je t'aiderai même à en faire la promotion.

Bref, pour info je suis toujours à la recherche d'aide pour ma macro...

re

je veux t'aider (sans macro naturellement)

on fait un exemple simple :

  • un fichier de données qui est mis à jour ou remplacé chaque seconde ou jour
  • un fichier qui va traiter ces données

je te fais un exemple tout dans le même fichier

12classeur1.xlsx (45.69 Ko)

bien entendu, on peut traiter les données lors du chargement, on peut les concaténer avec les données précédentes. Ensuite à chaque mise à jour, on clique "actualiser" et hop, c'est fait.

Microsoft a créé Power Query pour résoudre ton problème.

note que personne n'a jamais de problème de VBA ni de formule, ni de couleur... mais tout le monde a un BUT

et je pense qu'on ne connaît pas ton but, ni les différents fichiers de départ, ni LE fichier de traitement

joins 3 fichiers de départ et LE fichier de traitement (enlève les colonnes qui ne servent pas la démonstration)

je vais le faire.

Bonsoir,

Il s'agit d'un autre sujet que le précédent, mais qui m'a l'air d'entrer quelque part en contradiction avec lui, sans doute parce que les explications sont incomplètes... mais pas grave en soi.

Je reprends tes indications en gros [je préfère les détails ].

1: S'assurer que les champs du formulaire sont bien remplis avant de permettre l'activation du bouton.

Rien dans ton code ne le fait, ou j'ai mal vu... C'est normalement une vérification qu'on fait lors d'une validation, soit suite à un clic sur bouton.

Il faut donc préciser quel bouton doit s'en charger ?

Est-ce que tous les champs doivent être servis ?

Evidemment cela ne concerne pas les CheckBox, ou alors dire comment ?

2: Prendre les 3 valeurs situées en E16:E18,de la feuille "sigma mu"

3: les transférer dans le tableau suivi dans les colonnes "mesure1", "mesure2" et "mesure3" à la suite de celles déjà renseignées.

Il faut donc à priori ouvrir le fichier cible, non ouvert à ce moment ? Même chose que ce qui était fait auparavant ?

Et indiquer s'il doit être fermé à la fin de l'opération ? (comme on l'ouvrait à l'import, si l'import peut se produire ensuite, il ne serait plus à ouvrir... à moins de le fermer dans tous les cas, une précision en la matière évitera de générer des sources d'erreur).

Les points 4, 5, 6 entrent dans le même cadre, pas de remarque supplémentaire.

7: Effacer les données du fichier sigma mu (en particulier les données de la colonne G qui viennent de l'importation)

Toutes les données, sauf les indications d'en-tête donc ! Pas de difficulté.

8: Le transfert doit se faire sans que l'on bascule sur le fichier suivi, il faut garder la main sur le fichier sigma mu.

Si on ferme le fichier cible, il reviendra au premier plan, sinon on l'active. Mais je t'ai déjà expliqué que tu n'auras la main qu'à la fermeture du Userform.

Cordialement.

Bonjour,

Merci pour ton retour.

Il s'agit d'un autre sujet que le précédent, mais qui m'a l'air d'entrer quelque part en contradiction avec lui, sans doute parce que les explications sont incomplètes... mais pas grave en soi.

Dans un sens oui mais c'est bien la suite du précédent. Comme le titre du sujet l'annonce, il y a une partie importation et une autre exportation. Tout se passe avec mêmes fichiers que pour l'importation. En fait, au début on ouvre le fichier suivi et on importe des données pour effectuer nos calculs et ensuite on renvois les résultats sur le fichier de départ pour faire un historique et un certificat de conformité.

1: S'assurer que les champs du formulaire sont bien remplis avant de permettre l'activation du bouton.

En fait, je souhaite juste rendre non cliquable le bouton "transfert" (le bouton exportation s'appel comme cela pour le moment) tant que les champs du formulaire ne sont pas remplis. Pour les checkboxs, tant qu'elles ne sont pas cochées si c'est possible. (avec les <> "" non?)

Il faut donc à priori ouvrir le fichier cible, non ouvert à ce moment ? Même chose que ce qui était fait auparavant ?

Et indiquer s'il doit être fermé à la fin de l'opération ? (comme on l'ouvrait à l'import, si l'import peut se produire ensuite, il ne serait plus à ouvrir... à moins de le fermer dans tous les cas, une précision en la matière évitera de générer des sources d'erreur).

Les points 4, 5, 6 entrent dans le même cadre, pas de remarque supplémentaire

Non, le fichier cible est bien ouvert, c'est celui que l'on a ouvert avec la fonction importation (ce sont les mêmes fichiers). Il faut le laisser ouvert, je souhaite juste transférer des résultats. Il doit rester ouvert car après je souhaite éditer un certificat de conformité (feuille 2 du fichier), j'aimerais que ce soit la personne qui reprenne la main sur le fichier suivi en manuelle.

4: Prendre la date renseignée en H15 (sigma mu) et la transférer dans le tableau suivi dans la colonne "A" à la suite des autres.

5: Prendre le "Z" situé en D22, le "Zthéo" en D23, Le "Test" en D24, le "F", "Fthéo" et "Test" situés en D32, D33 et D34 ---> à transférer dans les colonnes E à J du fichier suivi (à la suite des autres).

6: Prendre les états des checkboxs situés de K18 à K23 et les transférer sur la feuille 2 (colonne C13 à C18)

Ce sont les infos que l'on rentre sur le formulaire. Si tu te souviens, on importe 3 valeurs au début sur le fichier source. ces valeurs permettent les calculs avec les infos que l'on rentre sur le formulaire. Parmi ces infos, il y a aussi la date, le nom du contrôleur, les checkboxs... Ces infos sont transférer sur la feuille du formulaire (ce que j'ai réussi à faire avec ton aide), on appui sur le bouton calcul, une mesbox affiche les résultats et ensuite il faut envoyer toutes infos (celles demandées par le fichier suivi) sur le fichier suivi pour faire l'historique (donc à chaque fois, elles s'inscrivent à la suite des autres dans le tableau). Les cellules dont je parle ici (D22, K18...) sont celles ou se trouvent les infos une fois les calculs effectués (bouton calculer du formulaire).

Toutes les données, sauf les indications d'en-tête donc ! Pas de difficulté

Oui, c'est bien cela.

Si on ferme le fichier cible, il reviendra au premier plan, sinon on l'active. Mais je t'ai déjà expliqué que tu n'auras la main qu'à la fermeture du Userform.

. Comme je l'ai dis, pas de fermeture, un certificat doit être édité.

En espérant que cela soit plus clair. Merci pour ta patience en tout cas

A bientôt.

Pom

Bonjour,

Je n'en suis qu'au 2e café... !

En traitant le sujet initial, j'avais pensé que l'import précédait, j'ai ensuite cru le contraire (histoire de je ne sais plus quel bouton désactivé) puis j'avais eu des doutes... Recadrons donc !

On commence par l'import et le fichier (pince ou autre, puisque ouvert au choix de l'utilisateur) restera ouvert pour la suite.

L'affectation de ce classeur à une variable, choix optionnel dont on pouvait éventuellement se passer, devient relativement obligé et cette situation plaide pour une variable niveau module pouvant être utilisée par les différentes procédures.

Le bouton Calculer est désactivé au démarrage (activé par la saisie sur txtseuil).

Le bouton Transfert devrait donc l'être également. Et être activé après calcul.

Et le bouton import (Open maintenant) devrait se désactiver après usage.

Si l'on doit avoir une succession Calcul --- Transfert : le bouton Calcul devrait peut-être se désactiver après usage et activation du bouton Tranfert, sachant que si on ne transfère pas (on ne valide pas). On remettrait à zéro en effaçant : désactivation des boutons et réactivation dans les mêmes conditions...

Et si plusieurs séquences de l'espèce sont réalisées, c'est l'effacement qui permet de passer d'une séquence à la suivante.

La vérification des saisies est absente (sauf txtseuil qui active le bouton Calcul). Il faut donc l'introduire dans la procédure de ce bouton...Aucun problème pour vérifier que les TextBoxes sont saisies.

Par contre, il y en a un du côté des CheckBoxes : ces dernières n'ont pas une valeur de type String, mais une valeur booléenne. Dans leur utilisation habituelle, leur valeur par défaut est False, au clic ils prennent la valeur True et si on reclique ils reviennent à False. Autrement dit, on ne peut savoir si l'utilisateur a laissé consciemment la valeur False, ou s'il a oublié de cliquer.

Mais ces contrôles peuvent éventuellement prendre une 3e valeur lorsque leur propriété TripleState est activée : Null (la box apparaît alors grisée, et il faut 3 clics pour accomplir un cycle et revenir à l'état initial.

Si tu penses que l'on doit contrôler l'action sur les CheckBoxes, une solution serait d'activer cette propriété TripleState, de les mettre par défaut à Null, les valeurs True ou False ne pourraient alors résulter que de l'intervention de l'utilisateur, et la vérification porterait sur le fait qu'ils n'aient plus la valeur Null.

Pour faciliter, on éliminerait l'état TripleState au premier clic (retour à l'alternance True-False dès lors que l'utilisateur a commmencé à cliquer...) et on le rétablirait de même que la valeur Null lors de l'effacement.

Dernière incertitude : le certificat de conformité ! Lors du transfert, j'ai noté que l'on en servait une partie, en relation avec l'état des CheckBoxes. Mais le reste, comment apparaît-t-il ? Il n'y a pas de formules... Et si tu dois boucler l'opération à partir de ton formulaire, je confirme que tu n'as pas la main tant que le Userform est affiché (il doit être déchargé ou masqué). Il conviendrait donc de définir plus précisément cette opération dans la séquence globale...

En rouge : les modifications à apporter qui me paraissent à peu près sûres (sauf infirmation d'un élément que je tenais acquis à tort).

En vert : les points qui me semblent devoir recevoir confirmation ou non de ta part. Si confirmé, je saurais quoi faire, si infirmé me repréciser les éléments sur lesquels s'appuyer que je n'aurait pas pris en considération.

Et apporter un peu plus de détail sur le certificat...

Cordialement.

Merci pour ton retour et bon café (j'en suis au 3ème moi).

Je comprends mieux (il me semble) le niveau des variables.

Sinon je pense que tu as bien compris l'idée.

Oui le fichier est ouvert avec "open" et reste ouvert tout le temps.

Le bouton "open" peut se désactiver après usage oui, comme les autres (c'est une bonne idée).

Pour le bouton "calculer", effectivement pour le moment je n'ai pas fini de mettre les conditions, j'ai juste fais un essai avec "seuil", c'est pour cela qu'il n'y a que cette condition.

Si l'on doit avoir une succession Calcul --- Transfert : le bouton Calcul devrait peut-être se désactiver après usage et activation du bouton Tranfert, sachant que si on ne transfère pas (on ne valide pas). On remettrait à zéro en effaçant : désactivation des boutons et réactivation dans les mêmes conditions...

Et si plusieurs séquences de l'espèce sont réalisées, c'est l'effacement qui permet de passer d'une séquence à la suivante.

Oui ton idée me semble bonne. Effectivement, la touche effacer peut permettre la remise des boutons "active" pour refaire un test une deuxième fois (si par exemple le premier est mauvais). Par contre, je me demande si le bouton "fermer" devrait pas aussi effacer les enregistrements avant fermeture. Si la personne ferme sans faire attention, faudrait pas que les données soient gardées en mémoire. Pour éviter aussi le "voulez vous enregistrer les modifications" de excel.

Si tu penses que l'on doit contrôler l'action sur les CheckBoxes, une solution serait d'activer cette propriété TripleState, de les mettre par défaut à Null, les valeurs True ou False ne pourraient alors résulter que de l'intervention de l'utilisateur, et la vérification porterait sur le fait qu'ils n'aient plus la valeur Null.

Pour faciliter, on éliminerait l'état TripleState au premier clic (retour à l'alternance True-False dès lors que l'utilisateur a commmencé à cliquer...) et on le rétablirait de même que la valeur Null lors de l'effacement.

Si cela est compliqué, je peux m'en passer. Il faudra que l'opérateur soit attentif, ce n'est pas grave si ce n'est pas présent. Je pensais pas que c'était si problématique, j'aurais peut être du choisir autre chose que des checkboxs.

Dernière incertitude : le certificat de conformité ! Lors du transfert, j'ai noté que l'on en servait une partie, en relation avec l'état des CheckBoxes. Mais le reste, comment apparaît-t-il ? Il n'y a pas de formules... Et si tu dois boucler l'opération à partir de ton formulaire, je confirme que tu n'as pas la main tant que le Userform est affiché (il doit être déchargé ou masqué). Il conviendrait donc de définir plus précisément cette opération dans la séquence globale...

Lors du transfert, le reste pour compléter le certificat sera fait avec les éléments de la feuille 1 par liaison ou autre formule (ce n'est pas fait encore). C'était simplement pour éviter de faire des macros supplémentaires, je me dis que cela doit pouvoir se faire sans macro en bloquant les cellules pour éviter que quelqu'un ne les modifies. C'est surement pas le plus optimisé mais bon comme je ne suis pas un expert...

Après, au début je voulais même faire un générateur de N° de certificat et une macro pour lancer l'impression pdf du certificat mais bon ce sera très bien comme cela .

Ce n'est pas gênant de reprendre la main que lors de la fermeture du formulaire. De toute façon, l'utilisateur n'a pas de raison d'aller sur le certificat avant d'avoir enregistré les infos dessus.

En espérant avoir répondu à tes interrogations.

Une fois encore, merci pour ton aide précieuse.

Pom

Ok pour le certificat, s'il n'en émet qu'un par session Formulaire, pas de souci.

Pas de souci non plus pour le bouton Fermer, il décharge le Userform, ce qui efface tout...

Pour les CheckBoxes, il suffit de programmer... la seule difficulté que je voyais, c'est que l'utilisateur ne soit pas déstabilisé par la valeur Null, mais on peut mettre une mention pour capter son attention et l'informer...

Il faudra un peu de délai, car dans l'immédiat j'ai quelques activités obligées qui vont me prendre une bonne partie de la journée restante.

@+

Encore un point, les valeurs saisies dans les txtmesure1 à 3 : valeurs numériques sans doute, mais entières ou décimales, et si décimales quel est le séparateur décimal utilisé lors de la saisie ?

On peut prendre des précautions de toutes façons mais autant savoir ce que tu as prévu...

Re.

Les valeurs sont entières, il n'y a pas de virgule. Les mesures des essais de traction (puisqu'il s'agit bien de cela) peuvent varier de quelques dizaines de newtons à quelques centaines. Il est possible de dépasser les 1000 N mais plus rarement.

La plage est grande en fait...

Merci de ton aide.

Pom

Bonjour,

Pas eu le temps de tester de près mais je dois m'absenter, et de toute façon tu es mieux à même de tester que moi !

Ça ne plante pas au démarrage, il n'y a donc pas en principe de grosse bévue qui bloquerait l'ensemble.

Pour les explications, plus tard, et vois les points sur lesquels tu as besoin de t'y retrouver.

Cordialement.

Bonjour,

Merci pour retour.

A priori, le formulaire fonctionne bien, il y a juste un problème au niveau du transfert dans le tableau suivi.

Le transfert ne se fait pas juste en dessous de la première ligne du tableau mais il y a un saut de ligne.

Ce ne serait pas trop un problème mais à priori cela fait planter le calcul car comme il y a une ligne vide, lorsque l'on recommence un calcul l'exportation laisse également un trou correspondant à la ligne vide du tableau de suivi.

En regardant le programme, je n'arrive pas trop à voir sur quelle ligne modifier l'erreur.

Edit: bon on dirait que le bug n'apparait plus, j'ai supprimer le saut de ligne et la ligne du dessous et maintenant le tableau se renseigne correctement... Bon, je fais quelques tests dans l'après midi pour voir.

Pas d'erreur de ce point de vue, l'insertion se fait sous le tableau (seul correctif si le tableau est vide sa première ligne est vide, ça on le teste... Sinon ton tableau ne doit pas comporter de ligne vide, et toute ligne insérée en dessous y est automatiquement incorporé par Excel.

Cordialement.

Rechercher des sujets similaires à "importer exporter donnees formulaire"