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 :

Utilisation de taleaux pour faire une base de données


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Utilisation de taleaux pour faire une base de données
    Bonjour à tous,
    Je suis en trein de remplir une base de données sur excel, pour cela j'utilise des macros.
    Je m'aperçois que pour faire une macro en particulier je vais être obligé du'iliser VBA, language que je ne connais pas beaucoup...


    Je vais essayer de vous expliquer mon problème, ce qu'il me faudrait, c'est juste des fonctions clé que je pourrai utiliser...

    Tout d'abord j'ai crée des tableaux sur différents fichiers excel, je voudrais pouvoir les récupérer dans des variables tableau : par exemple comment récupérer les tableaux des fichiers tableau 1, tableau2 etc.

    Ensuite e voudrais que chaque macro gère un tableau. Par exemple je souhaiterai que ma macro1 aille chercher des valeurs dans un tableau 1. C'est à dire, dans ma base de données je voudrait écrire dans la colonne C. les valeurs qui correspondent à la remière ligne de ce tableau1 sera la colonne A, la première colonne du tableau 1 sera la colonneB. En faite, chaque cellule de C sera l'intersection de la cellule A et cellule B dans le tableau 1. Pour cela j'utiliserait la macro1. Quelles fonctions dois-je utiliser?

    Les autre macro fontionne exactement pareil.


    Merci pour votre aide.

  2. #2
    Membre régulier
    Homme Profil pro
    Technicien méthodes métrologie sur site
    Inscrit en
    Novembre 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien méthodes métrologie sur site
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 107
    Points : 114
    Points
    114
    Par défaut
    Bonjour,

    Voici un lien vers un tuto très bien fait pour l'utilisation des variables tableaux
    http://silkyroad.developpez.com/vba/tableaux/

    Sinon le logiciel le plus adapté à de la base de données est Access et non Excel...après je ne connais pas tes contraintes ni ton application exacte.

  3. #3
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Par contre, peux-tu être plus explicite sur cette partie
    Ensuite e voudrais que chaque macro gère un tableau. Par exemple je souhaiterai que ma macro1 aille chercher des valeurs dans un tableau 1. C'est à dire, dans ma base de données je voudrait écrire dans la colonne C. les valeurs qui correspondent à la remière ligne de ce tableau1 sera la colonne A, la première colonne du tableau 1 sera la colonneB. En faite, chaque cellule de C sera l'intersection de la cellule A et cellule B dans le tableau 1. Pour cela j'utiliserait la macro1. Quelles fonctions dois-je utiliser?
    un exemple de départ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    'un essai sur 2 feuilles d'un même classeur
    'on transpose la ligne 1 (titres, en général) dans la col C de feuille 2
    Sub essai()
    Dim Tbl
    Dim DerCel As Range
    With Sheets("Feuil1") 'à remplacer par le nom de feuille
      Set DerCel = .Range("A" & .Rows.Count).End(xlUp) 'dernière ligne utilisée en col A
      Tbl = .Range("A1", DerCel(1, 12)) 'un tableau reprenant les données de col A à col L
    End With
    With Sheets("Feuil2") 'à remplacer par le nom de feuille
      .Range("C1").Resize(UBound(Tbl, 2), 1) = Application.Transpose(Tbl)
    End With
    'ensuite on verra suivant tes explications
    End Sub

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Tout d'abors merci de vos réponse et malheuresement je ne peux pas utiliser access car je suis en stage et la base de données est sur excel.

    Je vais essayer de développer casefayere ,
    Tout d'abord mon problème est que les tableaux se trouvent sur des classeurs différents sinon chaque macro se comporte de la même manière..
    Prenons l'exemple de la macro que j'appel macro1.
    Je souhaite stocker les valeurs du tableau1 qui se trouve dans un classeur : classeur 1 dans une variable tableau( tableauvb) en VBA. Ensuite dans un autre classeur excel : celui de la base de données j'écris dans la colonne C en fonction des valeurs des colonnes B etA. J'ai remplis les colonnes B etA de telle sorte à ce que les valeurs de la colonne A sont celles de la première ligne du tableau1 et les valeurs de la colonne B sont celles de la première colonne du tableau1 . La macro intervient de telle sorte que ligne par ligne qu'elle va chercher l'intersection dans le tableau 1 du contenu des cellule de A et B et remplit la cellule C avec l'intersection..

    J'espère que c'est plus clair comme cela merci de ton aide

  5. #5
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    mon problème est que les tableaux se trouvent sur des classeurs différents
    en quoi est-ce un problème, sont-ils ouverts ?
    l'exemple que je fournis simule les tableau sur un même classeur mais feuilles différentes, donc plus facile à vérifier et facilement adaptable pour plusieurs classeur
    classeur 1 dans une variable tableau( tableauvb) en VBA
    je te l'ai fait avec une autre variable "tbl", il suffit d'adapter

    je traduis, si les classeurs sont ouverts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Tableauvb
    Dim DerCel As Range
    With Workbooks("classeur 1.xlsm").Sheets("Feuil1") 'à remplacer par le nom du classeur et du nom de la feuille
      Set DerCel = .Range("A" & .Rows.Count).End(xlUp) 'si les données commencent en A, dernière ligne utilisée en col A
      Tableauvb = .Range("A1", DerCel(1, 12)) 'un tableau reprenant les données de col A à col L
    End With
    J'ai remplis les colonnes B etA de telle sorte à ce que les valeurs de la colonne A sont celles de la première ligne du tableau1
    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With ThisWorkbook.Sheets("Feuil1") 'à remplacer par le nom de feuille
      .Range("A1").Resize(UBound(Tableauvb, 2), 1) = Application.Transpose(Tableauvb)
    les valeurs de la colonne B sont celles de la première colonne du tableau1
    on continue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With ThisWorkbook.Sheets("Feuil1") 'à remplacer par le nom de feuille
      .Range("A1").Resize(UBound(Tableauvb, 2), 1) = Application.Transpose(Tableauvb)
      .Range("B1").Resize(UBound(Tableauvb, 1), 1) = Tableauvb
     
    End With
    La macro intervient de telle sorte que ligne par ligne qu'elle va chercher l'intersection dans le tableau 1 du contenu des cellule de A et B et remplit la cellule C avec l'intersection..
    là, je ne comprends plus

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Cette fois-ci je vais expliquer avec un tableau :
    1.6 1.60 2 2 2.5
    2 2 2.6 2.6 3.1
    2.5 2.5 3 3 4
    16 16 20 20 25
    0.35 0.35 0.4 0.4 0.45

    Mettons que la première ligne de ce tableau soit composée des valeurs de la colonne A et que la première colonne de ce tableau soit composée des valeurs de la colonne B.
    je voudrai avec la macro1 remplir la colonne C de manière à ce que par exemple si dans une même ligne de la base de donnée, on a 1.60 dans la colonne A et 2.5 dans la colonne B la macro écrive 2.5 dans la cellule C (intersection des valeurs de A et de B dans le tableau)

    Quelles fonctions je dois utiliser en VB?

    Cordialement

  7. #7
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    envoies un fichier (bidon si tu veux), en ajoutant les explications, je ne vais pas reprendre tes données pour construire le fichier moi-même, je travaille avec des données concrêtes

    Mettons que la première ligne de ce tableau soit composée des valeurs de la colonne A et que la première colonne de ce tableau soit composée des valeurs de la colonne B.
    Mais la macro qui fait ça, est-elle déjà existante ? si oui, envoies la

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Non, justement je sais pas comment la faire....

    Cordialement.

  9. #9
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    alors je répète
    envoies un fichier (bidon si tu veux), en ajoutant les explications

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/05/2015, 16h25
  2. utilisation ADO pour créer une Base de Donnée vide
    Par laribi71 dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 20/02/2008, 19h13
  3. Réponses: 3
    Dernier message: 18/01/2008, 20h45
  4. Réponses: 12
    Dernier message: 05/03/2007, 10h36
  5. Réponses: 8
    Dernier message: 23/03/2005, 19h28

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