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 :

USF : Intégrer des données textbox dans une ligne aléatoire [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut USF : Intégrer des données textbox dans une ligne aléatoire
    Bonjour à tous !
    Fidèle lectrice de vos échanges et de vos solutions, je franchi un cap aujourd'hui en postant mon premier message sur le Forum.
    J'ai parcouru les us et coutumes en vigueur et espère ne pas commettre d'impair (n'hésitez pas à me remettre sur le droit chemin)

    J'ai besoin de votre aide pour un fichier que je suis en train de réaliser pour faciliter les process dans notre petite entreprise :
    Mon fichier est composé d'une base de données que nous appellerons "Fournisseurs".
    Le USF que j'ai créé a pour objectif de compléter les données clients correspondant à chaque Fournisseur.
    La Textbox1 "numéro fournisseur" de mon formulaire renseigne les caractérisques du dit fournisseur dans les textbox suivantes (Ca c'était pas facile (pour moi) mais c'est bon, ca fonctionne).
    Les données clients que je vais saisir devront donc s'intégrer dans la ligne du Fournisseur donné dans la Textbox1 lorsque que je cliquerai sur le bouton valider...

    Oui mais voilà, je tourne en rond depuis 24h et je ne sais même plus le nombre de code différents que j'ai tenté d'adapter...!

    la dernière tentative (qui m'a ammener à craquer et à vous consulter) :

    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
    Private Sub CommandButton2_Click()
    Dim Client As Integer ' Déclaration des données clients
    With Sheets("Répertoire_Fournisseurs").Columns(1) ' Dans la feuilles données fournisseurs colonne A
    i = .Cells.Find(TextBox1).Row ' On recherche dans la base de données la ligne de la valeur N° Fournisseur inscrite dans la Textbox1
     
    Client = Sheets("Répertoire_Fournisseurs").i 'On défini l'emplacement des données clients client
     Sheets("Répertoire_Fournisseurs").Range("M" & Client) = Me.TextBox2
     'On intégre les données "Nom" dans la feuille Répertoire_Fournisseurs dans la colonne M et dans la ligne i
    TextBox2.Value = ""
     ' On efface la Textbox2 pour qu'elle soit vide à la réouverture de l'USF
     Sheets("Répertoire_Fournisseurs").Range("N" & Client) = Me.TextBox3
     TextBox3.Value = ""
     Sheets("Répertoire_Fournisseurs").Range("O" & Client) = Me.TextBox4
     TextBox4.Value = ""
     
    USF_Ajouter_un_Client.Hide
    End With
    End Sub
    Je dois vous paraître ridicule avec ce code dont l'erreur signalée et n°91 "With non définie".

    Auriez-vous une piste ? un conseil ?
    Merci par avance
    A bientôt

    Morgane

  2. #2
    Expert éminent
    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
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Une piste (pas testé du tout) :
    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
     
    Private Sub CommandButton2_Click()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Client As Integer ' Déclaration des données clients
     
        'Dans la feuilles données fournisseurs colonne A
        With Worksheets("Répertoire_Fournisseurs")
     
            Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
     
        End With
     
        'On recherche dans la base de données la ligne de la valeur N° Fournisseur inscrite dans la Textbox1
        Set Cel = Plage.Find(TextBox1.Text)
     
        If Not Cel Is Nothing Then
     
            'On intégre les données "Nom" dans la feuille Répertoire_Fournisseurs dans la colonne M et dans la ligne i
            Cel.Offset(0, 12) = TextBox2.Text
            Cel.Offset(0, 13) = TextBox3.Text
            Cel.Offset(0, 14) = TextBox4.Text
     
            ' On efface la Textbox2 pour qu'elle soit vide à la réouverture de l'USF
            TextBox2.Text = ""
            TextBox3.Text = ""
            TextBox4.Text = ""
     
        End If
     
        USF_Ajouter_un_Client.Hide
     
    End Sub
    Hervé.

  3. #3
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Bonjour Hervé et Merci pour ta réponse !
    Ton code fonctionne très bien (bravo pour une rédaction à l'aveugle) car les données sont bien intégrées dans la ligne correspondant au numéro saisi dans la Textbox1.
    Par contre les données sont ajoutées en fin de tableau en me créant de nouvelles colonnes pour chaque donnée...
    J'ai réadapté le code à mon fichier réel et après plusieurs tentative je n'arrive pas à comprendre d'où vient le bug.
    Je pense que cela vient de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'On intégre les données "Nom" dans la feuille Répertoire_Fournisseurs dans la colonne M et dans la ligne i   
    Cel.Offset(0, 13) = TextBox2.Text
    ... ne connaissant pas la fonction Offset, je crois que c'est la source de mon incapacité à résoudre le problème ! Je vais bucher un peu plus !
    En tous cas un gros Merci! j'ai l'impression de voir le bout grâce à tes conseils !!


    Morgane

    En fait ça ne va pas ...(je parle de ma résistance psychologique face à l'adversité excelienne)
    Le problème est que "si" la ligne est reconnue (je n'en suis pas certaine car après test si le code fournisseur est 88 et que malcontreusement un autre fournisseur à un numéro de téléphone du type 01.88... Ca arrete la recherche et considère cette ligne), les données sont intégrées en créant de nouvelles colonnes à la fin du tableau...
    Merci par avance pour tout conseil ou piste qui pourrait me sortir de ce pétrin !

  4. #4
    Expert éminent
    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
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonsoir,

    J'ai modifié le code (la fonction Find en fait) pour que la valeur exacte soit recherchée mais attention à la casse !
    J'ai effectué un test et les valeurs s'inscrivent bien en M, N et O de la ligne trouvée par Find :
    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
    40
    41
    42
    43
     
    Private Sub CommandButton2_Click()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Client As Integer ' Déclaration des données clients
     
        'Dans la feuilles données fournisseurs colonne A
        With Worksheets("Répertoire_Fournisseurs")
     
            Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
     
        End With
     
        'On recherche dans la base de données la ligne de la valeur N° Fournisseur inscrite dans la Textbox1
     
        '>>>> de cette façon, l'expression exacte est recherchée mais la casse à son importance
        Set Cel = Plage.Find(TextBox1.Text, , xlValues, xlWhole)
     
        If Not Cel Is Nothing Then
     
            'On intégre les données "Nom" dans la feuille Répertoire_Fournisseurs dans la colonne M et dans la ligne i
     
            'Cel.Offset(0, 12) signifie qu'on décale de zéro ligne (donc sur la même ligne que la cellule en cours "Cel") et de 12 colonnes
            'la plage de recherche étant en colonne A donc si tu veux avoir la valeur dans une autre colonne le décalage doit être de :
            '12 pour la colonne M
            '13 pour la colonne N
            'et 14 pour la colonne O
     
            Cel.Offset(0, 12) = TextBox2.Text
            Cel.Offset(0, 13) = TextBox3.Text
            Cel.Offset(0, 14) = TextBox4.Text
     
            ' On efface la Textbox2 pour qu'elle soit vide à la réouverture de l'USF
            TextBox2.Text = ""
            TextBox3.Text = ""
            TextBox4.Text = ""
     
        End If
     
        USF_Ajouter_un_Client.Hide
     
    End Sub
    Hervé.

  5. #5
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Comment vous dire sans paraître en faire trop MERCI !
    Alors là ! je suis impressionnée !
    Merci vraiment ! Chapeau Hervé !
    C'est tout simplement génial et je vous remercie aussi pour votre pédagogie dans les descriptions qui vont me permettre de progresser (j'avais vu juste : ma méconnaissance de la fonction était LE gros problème puisqu'en adaptant à mon fichier j'ai tout simplement détruit le code initial ! )
    Excellente soirée à vous et encore merci !

    Morgane

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

Discussions similaires

  1. [XL-2010] Afficher des données cellules dans une textbox et pouvoir les modifier ensuite
    Par chiken samada dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/02/2015, 11h11
  2. Application Java web qui permet d'intégrer des données XML dans une base Oracle
    Par honesttrick dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 22/10/2014, 10h50
  3. Intégrer des données excel dans une BD sql server
    Par rashania dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/05/2010, 17h41
  4. Définir le type des données contenues dans une TextBox
    Par ghosty04 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/06/2009, 15h15
  5. Insérer des données Excel dans une base Access ?
    Par MaTHieU_ dans le forum Access
    Réponses: 3
    Dernier message: 22/06/2005, 15h11

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