Je me permets de vous écrire pour vous demander une aide sous vba.
Voila, j’ai une base qui se remplie constamment avec plein de références.
Seule une référence est importante pour moi.
En gros, j’ai deux fichiers excel, un qui me sert de base(mabase) et l’autre qui me sert de fichier réception(resultat).
Dans mon fichier excel Résultat, j’ai un bouton (synchroniser) qui me permet de récupérer les lignes qui correspondent à ma référence.
Mais je n’arrive pas. Quelqu’un saurait m’aider?
Vous en saurez plus en ouvrant les deux fichiers. Dans le excel résultat il y a un exemple.
“Synchro” veut dire quand tu cliques récupérer que les nouvelles données correspondantes ? ou compiler avec celle qui sont déjà présentes dans le fichier résultat ?
Ce fichier Base est remplacé ? ou complété chaque début de semaine ? Sa structure (nom des colonnes, position) ne change pas ?
Oublie pas de préciser ta version Excel et si tu travail sur Mac ou Windows (manipulation de fichiers pas pareil".
Hu avec toutes ces questions j’espère qu’il reviendra.
La base mise à jour conserve les anciennes valeurs déjà présente.
Il est même possible qu’il y ait des informations en double. C’est pourquoi ma condition(pour éviter des doublons) est que la cellule du temps ne soit pas vide.
Quand l’utilisateur finit de remplir le fichier base, il le ferme. Et juste après moi j’ouvre mon fichier résultat pour obtenir mes informations. Laquelle des deux solutions(que tu me proposes) semble répondre parfaitement avec mon problème? Si je dois choisir je prendrai:Ne pas l’ouvrir et récupérer les infos. Tant qu’il récupère toutes les infos
WildDigiSoft,
je suis sur excel2016
En effet la structure de la base ne change jamais.
Synchro pour une sorte de rafraîchissement. C’est a dire il remet ma liste à jour (dans le fichier résultat).
Ça répond à ta question?
Merci
Ok, sur Excel 2016 tu as PowerPivot intégré. Tu peux importer des données d’un classeur fermé dans résultat.
Il fera en arrière plan la requête SQL correspondante.
L’avantage est que tu peux modifier le modèle de données facilement, et la fréquence d’actualisation est paramétrable.
Depuis ton fichier résultat–>Menu Données pour créer la requête
Tu te retrouve dans un tableau excel avec une requête dont tu peux réediter le modèle, sinon modifier la fréquence d’actualisation (très mal fait a mon avis cette partie je te met donc un image )
J’ai adapté ton code à ma base de données.
Le programme fonctionne correctement.
Un petit bémol, dans ma base j’atteins des ligne allant jusqu’à 30 000(A30000).
Dl = Range(“c” & Rows.Count).End(xlUp).Row ne fonctionne pas. Il marque que la fonction Row ne convient pas. J’ai alors mis ceci:
Dl = 30000
Là c’est bon, ça passe nickel sauf que pour Dl = 40000 il me mets dépassement de capacité. Tu aurais une idée sur comment gérer ça ou c’est normal?
Salut MDO
Tu as peut-être fait l’erreur de déclaration de variable, mais tu as quand même trouvé le “Schmilblick” du BUG
comme quoi tu n’est pas si mauvais que tu le penses, et tu l’aurais trouvé assez vite
Merci Mimimathy, merci MDO,
En effet en changeant juste la définition des variables, il dépasse les 60000 lignes.
Merci les pros.
Je programme sur C# mais vba c’est vraiment meilleur.