IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Mise à Jour des cellules vides d'une BDD EXCEL 2016 [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier Avatar de Laeny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2023
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2023
    Messages : 6
    Par défaut Mise à Jour des cellules vides d'une BDD EXCEL 2016
    Bonjour a tous

    Je débute en VBA je fait surtout de la modification de code existant afin de mettre a jour notre BDD , je travaille sur une base de donné qui permet de suivre des collectionneurs, environ 200

    en page "BASE" j'ai mes données recueillies auprès des utilisateurs (les infos récentes et modification)

    et en feuille "CONSTRUTEUR" la base de donnée de l'administration (très complète mais moins récente que les infos utilisateurs)

    lorsque je remplis ma "BASE" il reste parfois des cellules vides (infos manquantes ) et j'aimerais que ma macro (activé par un de mes boutons feuille "Accueil")puisse remplir les cellules vide grâce à l'importation de "constructeur"

    La colonne "CODE" est la référence unique qui corresponds qu'a une voiture et un utilisateur

    j'ai fait une macro mais elle remplace tout et écrase parfois des données déjà inscrites ; j'ai essayé avec IF mais je ne sais pas ou le placer
    J'ai fait tellement de test que plus rien ne fonctionne , j'aimerais juste un exemple pour comprendre le fonctionnement

    si quelqu'un a une idée sur la méthode a employer je vous en remercie d'avance
    EXCEL 2016
    Cordialement

    Laeny

    TEST1.xlsm

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Par défaut
    Salut,

    Il y a déjà un gros problème de conception: Tes tables sont "fourre-tout".
    Ce qui dans le cadre de tables de données (Excel n'est pas et ne sera jamais une base de données, celui qui te fait croire le contraire est un menteur), est très détrimentaire.

    On voit que tu as des informations concernant des personnes (nom, prénom, tel), des informations concernant des voitures (type) et constructeurs automobile (marque)
    Ce qui devrait résulter en 2 tables distincts.
    De plus, tu parles d'informations utilisateur et d'informations de l'administration, donc on devrait avoir une notion de rôle quelque part (soit une table supplémentaire).
    La colonne Code, je ne sais pas à quoi elle sert
    Au final, je voit au moins 4 tables.

    Une fois que tu auras définit les tables, il te faudra définir les contraintes (colonne obligatoire, colonne unique), les clefs, et les relations.
    Enfin, un moyen pour manipuler tout ce petit monde.

    PS: Utilise des tableaux structurés, ca faciliteras les traitements plus tard.

  3. #3
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    une solution ci-joint.

    TEST2.xlsm

    C'est pas optimisé pour 2 ronds (côté performances) mais j'aimais bien l'idée de fonctionner avec le bazar ambiant.

    Si c'était mon classeur, ce que je ferais a minima c'est :
    • ordre des colonnes identiques dans base et constructeur avec code en colonne 1
    • ajout à la fin de constructeur une colonne contenant un equiv du code vers base (donnant donc le n° de ligne à mettre à jour)


    moyennant quoi on pourrait s'affranchir des fonctions LaLigne et LaColonne et resterait en gros

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while .cells(i,1) <> ""
        j=2
        while .cells(LgTitres,j) <> ""
               iCible = .cells(i,colEquiv)
               if Cible.cells(iCible,j) = "" then  Cible.cells(iCible,j) = Source.cells(i,j)
    ....

  4. #4
    Membre régulier Avatar de Laeny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2023
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2023
    Messages : 6
    Par défaut
    Merci tête de chat je vais voir ce que ça donne

    en faite il n'y a qu'une infime partie des données sur ce fichier
    et les colonnes ne sont pas au même place car chaque organisme me donne des feuille différente et moi je doit en donné au different service avec leur ordre a eux , c'est une machine un pénible a gérer
    c'est pour ça que je fait des code pour chaque organisme comme ça je gagne du temps
    effectivement ce n'est pas une base de donné c'est de la transformation de mise en forme a la carte

    en tout cas merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/06/2018, 23h46
  2. Réponses: 2
    Dernier message: 18/12/2008, 13h00
  3. Afficher des champs vides d'une BDD
    Par xeak2008 dans le forum Bases de données
    Réponses: 4
    Dernier message: 16/10/2008, 14h01
  4. Réponses: 5
    Dernier message: 08/03/2007, 11h13
  5. [VBA-E]Mise à jour de cellule alimentée par une liste
    Par moritan dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/01/2007, 07h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo