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 :

Recherche et écriture dans un tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Par défaut Recherche et écriture dans un tableau
    Bonjour à vous,

    Voilà, j'ai une question et j'espère enfin trouver ma réponse dans ce forum.

    Avec un tableau Excel, j'ai un UserForm avec trois ComboBox et un TextBox. Selon mes données de la ComboBox 1; 2 et 3, je voudrais écrire le texte de ma TextBox dans la cellule cible.
    Par Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Si ComboBox1 = "4008" ; ComboBox2 = "3" ; ComboBox3 = x Alors Cellule "C8" = TextBox1
    Mais attention, je ne veux pas indiquer sur le programme comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ComboBox1 = "4008" And ComboBox2 = "3" And ComboBox3 ="x" Then Range "C5" = TextBox1
    Je veux qu'il y ai une recherche dans le tableau pour trouver la cellule et y écrire le texte de la TextBox

    J'espère être assez clair [

  2. #2
    Membre chevronné
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 214
    Par défaut
    Peut-être que cette solution te conviendras
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (..) then
      with Sheets(FEUILLE_A_COMPLETER)
               ' ex .cells(3,Rows(1).Find("NOM").Value = TextBox1
                .Cells(LIGNE OU ECRIRE, .Rows(1).Find(COLUMN A CHERCHER).Column).Value = TextBox1
      end with

  3. #3
    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,

    Déjà, si tu utilises un tableau Excel (Insertion--->Tableau) "ListObject" en VBA, il ne faut plus penser feuille Excel mais seulement tableau et travailler sur et avec les objets du tableau :
    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
     
    Sub Test()
     
        Dim Tbl As ListObject
     
        Set Tbl = Worksheets("Feuil1").ListObjects("Tableau1")
     
        MsgBox Tbl.DataBodyRange.Address(0, 0) 'adresse de la plage utilisée par le tableau pour stocker les données
        MsgBox Tbl.DataBodyRange.Cells(1, 1).Address(0, 0) 'adresse de la première cellule du tableau (hors entête)
        MsgBox Tbl.HeaderRowRange.Address(0, 0) 'adresse des entêtes
        MsgBox Tbl.DataBodyRange.Rows.Count 'nombre de lignes du tableau
        MsgBox Tbl.DataBodyRange.Columns.Count 'nombre de colonnes du tableau
     
        'entre une valeur dans la cellule vide en bas à gauche sous le tableau (elle sera, une fois la valeur entrée, intégrée au tableau)
        With Tbl.DataBodyRange: .Cells(.Rows.Count + 1, 1).Value = "Test": End With
        'etc...
     
    End Sub
    Le problème, exposé comme tu l'as fait, c'est qu'on ne sait pas quoi et où chercher pour pouvoir insérer la valeur du TextBox dans la bonne cellule !
    Si ComboBox1 = "4008" ; ComboBox2 = "3" ; ComboBox3 = x Alors Cellule "C8" = TextBox1
    Il faut rechercher les valeurs des trois ComboBox sur la même ligne ?
    En attendant un peu plus d'explications !

  4. #4
    Membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Par défaut
    Bonsoir, et merci de m'accorder de votre temps.

    Je mets en pièce jointe un fichier afin d'être un peu plus compréhensible
    Fichiers attachés Fichiers attachés

  5. #5
    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,

    Testes ceci pour voir si ça convient :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Private Sub ComboBox1_Change()
        Valeur
    End Sub
     
    Private Sub ComboBox2_Change()
        Valeur
    End Sub
     
    Private Sub ComboBox3_Change()
        Valeur
    End Sub
     
    Sub Valeur()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Col As Integer
        Dim Lig As Integer
     
        If ComboBox1.Text <> "" And ComboBox2.Text <> "" And ComboBox3.Text <> "" Then
     
            With ActiveSheet: Set Plage = .Range(.Cells(1, 1), .Cells(1, .Columns.Count).End(xlToLeft)): End With
            Set Cel = Plage.Find(ComboBox1.Text, , xlValues, xlWhole)
            If Not Cel Is Nothing Then Col = Cel.Column
     
            With ActiveSheet: Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
            Set Cel = Plage.Find(ComboBox2.Text, Plage(Plage.Count), xlValues, xlWhole)
            If Not Cel Is Nothing Then Lig = Cel.Row
     
            With ActiveSheet: Set Plage = .Range(.Cells(Lig, 2), .Cells(Lig + 2, 2)): End With
            Set Cel = Plage.Find(ComboBox3.Text, , xlValues, xlWhole)
            If Not Cel Is Nothing Then Lig = Cel.Row
     
            If Lig <> 0 And Col <> 0 Then Cells(Lig, Col).Value = TextBox1.Text
     
        End If
     
    End Sub

Discussions similaires

  1. [Tableaux] question recherche et tri dans un tableau
    Par nicopoal dans le forum Langage
    Réponses: 7
    Dernier message: 25/01/2007, 16h41
  2. [Tableaux] Rechercher les doublons dans un tableau
    Par jym_22 dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2006, 09h47
  3. Rechercher une valeur dans un tableau
    Par pafi76 dans le forum Access
    Réponses: 2
    Dernier message: 29/06/2006, 14h23
  4. Faire une recherche de texte dans un tableau de variable
    Par alexxx69 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/02/2006, 13h12
  5. Problème d'écriture dans un tableau
    Par Hokagge dans le forum MFC
    Réponses: 46
    Dernier message: 08/07/2005, 16h47

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