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 :

Chercher des données par rapport à un numéro [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Par défaut Chercher des données par rapport à un numéro
    Bonjour à tous,

    Dernièrement j'ai créé un fichier plutôt pas mal mais l'essaye de le faire marcher en sens inverse et c'est plus difficile, je m'explique :

    J'ai demandé à des gens de renseigner des informations sur un formulaire excel et en bas du formulaire se trouve une macro qui va concaténer toutes les données sur une autre feuille excel afin de renseigner une base de donnée (BDD), exemple :

    A1 : Numéro : 001
    A2 : Nom : Dupond
    A3 : Problème constaté : Alternateur mort

    J'ai créé un autre formulaire qui permettra à modifier ce qu'ils avaient renseigné. L'autre formulaire est similaire au premier sauf que j'aimerai que cette fois-ci, en tapant le numéro 001, que les données Dupond et Pneu crevé apparaissent et qu'ils puissent par exemple modifié la cellule "A3 Alternateur mort" en par exemple --> "A3 Alternateur et batterie". Donc on aurait un formulaire de type :

    A1 : Numéro : 001 (En tapant 001 et en cliquant sur la marcro, la ligne A2 et A3 se renseigne automatique)

    A2 : Nom : Dupond
    A3 : Problème constaté : Alternateur mort

    Il modifie la ligne A3 en ajoutant : "A3 Alternateur et batterie" puis en cliquant de nouveau sur une macro, celle ci va sur la feuille base de donnée (BDD) et chercher le numéro "001" et mettre à jour la modification qu'il a apporté.

    Merci beaucoup, je galère sur excel, j'ai un petit niveau mais je me débrouille plutôt pas mal. Merci (un exemple avec un exemple de code VBA avec un descriptif des cellules et de changement de feuille serait le top).

    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une piste à adapter pour te mettre sur la voie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Sub Test()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Code As Long '<--- adapter le type !
     
        'défini la plage sur la colonne A de la feuille "Feuil2"(Base de données) à partir de A2 (évite les entêtes)
        'adapter le nom de la feuille !
        With Worksheets("Feuil2"): Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
     
        'le code à rechercher est inscrit en B1 de la feuille "Feuil1" (feuille formulaire)
        'adapter là aussi le nom de la feuille !
        Code = Worksheets("Feuil1").Range("B1").Value
     
        'effectue la recherche...
        Set Cel = Plage.Find(Code, , xlValues, xlWhole)
     
        'si trouvé, les valeurs inscrites en B2 et B3 seront reportées dans la colonne B et C face à la cellule
        'contenant le code recherché
        If Not Cel Is Nothing Then
     
            Cel.Offset(, 1).Value = Worksheets("Feuil1").Range("B2").Value
            Cel.Offset(, 2).Value = Worksheets("Feuil1").Range("B3").Value
     
        End If
     
    End Sub

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je pense qu'avant d'envisager ce type de développement, il faut prendre un peu de recul et se demander si ces formulaires apportent vraiment une plus-value par rapport à une saisie directe en cellule.

    Perso, j'ai pu constaté que la saisie en UserForm est généralement plus contraignante que la saisie en cellule.

    Si la plus-value est simplement la fonction de recherche lors de modifications, il y a bien plus simple pour faire ça.

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    exactement du même avis …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Par défaut
    Citation Envoyé par Theze Voir le message
    Bonjour,

    Une piste à adapter pour te mettre sur la voie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Sub Test()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Code As Long '<--- adapter le type !
     
        'défini la plage sur la colonne A de la feuille "Feuil2"(Base de données) à partir de A2 (évite les entêtes)
        'adapter le nom de la feuille !
        With Worksheets("Feuil2"): Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
     
        'le code à rechercher est inscrit en B1 de la feuille "Feuil1" (feuille formulaire)
        'adapter là aussi le nom de la feuille !
        Code = Worksheets("Feuil1").Range("B1").Value
     
        'effectue la recherche...
        Set Cel = Plage.Find(Code, , xlValues, xlWhole)
     
        'si trouvé, les valeurs inscrites en B2 et B3 seront reportées dans la colonne B et C face à la cellule
        'contenant le code recherché
        If Not Cel Is Nothing Then
     
            Cel.Offset(, 1).Value = Worksheets("Feuil1").Range("B2").Value
            Cel.Offset(, 2).Value = Worksheets("Feuil1").Range("B3").Value
     
        End If
     
    End Sub
    Euhreu Euhreu (je tousse)

    Merci Theze pour ta réponse mais comment l'appliquerais-tu si je te donnes ces 2 images ? Car honnêtement, mes connaissances sont un peu limites

    Citation Envoyé par Menhir Voir le message
    Je pense qu'avant d'envisager ce type de développement, il faut prendre un peu de recul et se demander si ces formulaires apportent vraiment une plus-value par rapport à une saisie directe en cellule.

    Perso, j'ai pu constaté que la saisie en UserForm est généralement plus contraignante que la saisie en cellule.

    Si la plus-value est simplement la fonction de recherche lors de modifications, il y a bien plus simple pour faire ça.
    Citation Envoyé par Marc-L Voir le message
    Bonjour,

    exactement du même avis …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    Bonjour Menhir et Marc-L, je vais mieux vous exposer la situation avec ces 2 images.

    Sur un fichier excel qui va être utilisé par différentes personnes de différents services, j'ai 3 feuilles :

    - Première feuille : "MAJ BDD"
    - Deuxième feuille : "BDD"
    - Troisième feuille : Je ne vais pas l'évoquer mais cette feuille permettra de renseigner les données régulièrement et donc créer des lignes dans la BDD (elle est déja faites et sur l'aspect programmation aussi)

    Revenons-en au 2 premières feuilles :

    La première feuille "MAJ BDD", doit me permettre (moi ou d'autres personnes) de charger des données provenant de la "BDD" puis dans un second temps, de les modifier et les réinjecter dans la feuille "BDD" afin de les mettre à jour. Exemple :

    Je suis sur la feuille "MAJ BDD", je vais en cellule G7 et j'inscris le numéro 000001 et je clique sur la boutton "Charger la fiche", à ce moment là les données se renseignent grace à la macro qui va chercher dans la feuille "BDD" le numéro de la ligne en colonne "B" correspondant au numéro 000001 et me charger toutes la ligne sur ma première feuille "MAJ BDD". Jusque là me diriez-vous je peux le faire avec des simples formules de base, c'est vrai. Mais là ou ça ce corse, c'est que si je modifie une donnée de la cellule D22 et je souhaite qu'elle se réinjecte sur ma feuille "BDD" pourla mettre à jour, ça devient plus difficile. Et je me suis dit, qu'un deuxième boutton que j'ai appelé "METTRE A JOUR", pourrait allez chercher dans la feuille "BDD" de nouveau la ligne et tout simplement la mettre à jour.. (attendez j'ai plus de respiration, je reprends mon souffle...) Voila pour l'exemple.

    La deuxième feuille "BDD" sert seulement à stocker toutes les données.

    Et la vous allez me dire, pourquoi tu stockes tes données sur une feuille "BDD", tu pourrais faire plus simple ... etc... Je les mets dans ce fichier car on me l'a demandé de les mettre et les personnes y tiennes car c'est plus rapide pour la consultation.

    Voila, j'espère vous avoir apporté plus de billes afin que vous puissiez m'aider en me renseignant les cellules et les feuilles concernées dans le code de programmation VBA.

    Merci et j'espère vous avoir éclairé dans ma demande.

    IMAGE 1
    Nom : 1.png
Affichages : 260
Taille : 36,7 Ko

    IMAGE 2
    Nom : 2.png
Affichages : 251
Taille : 12,1 Ko

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par etranger5 Voir le message
    La première feuille "MAJ BDD", doit me permettre (moi ou d'autres personnes) de charger des données provenant de la "BDD" puis dans un second temps, de les modifier et les réinjecter dans la feuille "BDD" afin de les mettre à jour.
    J'avais bien compris ce principe.
    La question que je pose est : es-tu sûr que ton onglet "MAJ BDD" apporte une réelle plus-value par rapport à une saisie directe dans l'onglet BDD ?
    Ou, du moins, es-tu sûr que cette hypothétique plus-value puisse compenser le temps de développement et les complications qu'elle cause ?

    D'autant plus que, à priori, le VBA ne semble pas être un langage que tu maitrises et donc que tu mets en place des outils sur lesquels tu n'as pas le contrôle.

    Je ne prétends pas connaitre la réponse, mais la question vaut bien que tu prennes quelques minutes à y réfléchir avant de passer des heures de développement, non ?

    Et la vous allez me dire, pourquoi tu stockes tes données sur une feuille "BDD", tu pourrais faire plus simple
    Absolument pas.
    Ce que je remets en cause n'est pas la feuille BDD (même s'il y aurait à dire sur l'utilisation d'Excel en tant que SGBD) mais la feuille "MAJ BDD".

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

Discussions similaires

  1. [XL-2010] Afficher des données par rapport à une liste de mois
    Par Lepetitlezard51 dans le forum Excel
    Réponses: 5
    Dernier message: 06/12/2014, 00h36
  2. Réponses: 2
    Dernier message: 15/10/2010, 11h47
  3. Récuperer des données par rapport a des cases d'option
    Par FCL31 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 04/03/2010, 15h47
  4. envoyer des données par rapport à une checkbox
    Par dudu134 dans le forum Langage
    Réponses: 2
    Dernier message: 18/05/2007, 18h57
  5. Centrer des données par rapport à un texte "parent"
    Par firejocker dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 08/01/2007, 16h44

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