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 :

Modifier et remplacer des données excel depuis un formulaire


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 24
    Points : 9
    Points
    9
    Par défaut Modifier et remplacer des données excel depuis un formulaire
    Bonjour à tous, je viens vous voir car je bute sur un pb de modifier/remplacer.
    J'ai créer un userform avec un combobox qui, quand je choisi un article dans celui-ci me donne toutes les infos en rapport avec lui (inscrite sur la même ligen excel).
    Tous les champs visibles sur le userform à l'exception de "code article" sont modifiables.

    Donc je voudrais créer un code qui, quand je modifie un ou plusieurs des champs remplace automoatiquement ce dernier dans la feuille excel après clique sur le bouton modifier créer sur le userform.

    En gros :

    Un userform lié à une feuille excel --> modification d'un ou plusieur champs --> clique sur bouton "modifier" efface les anciennes données et remplace par celle modifiées.

    Merci de votre aide.
    Images attachées Images attachées   

  2. #2
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour SenseniX le forum un exemple trés basique a adapter

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Je n'arrive pas à adapter le code pour moi.
    De l'aide Laetitia ?

  4. #4
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    re ,si je transpose dans ton cas. cela donnerait cela .le peu que j'ai vu avec tes images
    je pense que ta plage par de c6 : j & x
    donc 8 textbox a adapter

    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
    Dim t As Variant, Y As Byte
    Private Sub UserForm_initialize()
    t = Range("c6:j" & Range("c65536").End(xlUp).Row): c1.List = t
    End Sub
    Private Sub cmd2_Click()
    For Y = 1 To 8: Cells(c1.ListIndex + 6, Y + 2) = Controls("T" & Y).Value: Next Y: Beep
    Unload Me: UserForm1.Show
    End Sub
    Private Sub c1_Click()
    For Y = 1 To 8: Controls("T" & Y) = c1.List(c1.ListIndex, Y - 1): Next Y
     End Sub
    Private Sub cmd1_Click()
    Unload Me
    End Sub
    Private Sub c1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    c1.SetFocus: c1.DropDown
    End Sub
    ma combobox se nomme c1
    les textboxs renommées T1 A T8
    la textbox T1 dans proprietées pour pas pouvoir la modifier Locked a true

    j' ai laisse tomber le code les labels pour faire simple
    si tes données ne suivent pas la chronologie des textboxs dans ton userform change les de place pour qu'il correspondent

    bien sur si ta plage va pas jusqu'a la colonne j il faut adapter supposons quel va jusqu'a la colonne h
    donc dans initialize h a la place de j

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_initialize()
    t = Range("c6:h" & Range("c65536").End(xlUp).Row): c1.List = t
    End Sub
    puis les boucles dans les autres codes 1 to 6 au lieu de 1 to 8

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Je regarde ce soir, mais si ça peut t'aide voici mon fichier .
    à la place de "T", je dois mettre tous mes noms de champs car ils ont tous un nom différent.
    Fichiers attachés Fichiers attachés

  6. #6
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour SenseniX le forum j'ai regardais ton code 4 userforms je verrais bien avec seulement 1 ou eventuellement passer par un multipage pour simplifier le code a l'extreme j'ai fais un autre exemple en partant sur ton fichier les textbox il vaut mieux les nommées de T1 a T7 cela permet de faire des boucles plus simple on evite les boucles avec "TypeName" ou "TypeOf" & economiser des dizaines de lignes de code en plus. il faut seulement bien positionner les textboxs dans ton user. a mediter!!!

  7. #7
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Merci à toi, mais en fait je débute dans VBA et donc je peux pas encore alléger les codes, surtout que notre prof verrait que c'est trop perfectionné pour nous.


    Pourrais tu voir avec mon code actuel ce que cela pourrait donner?

    encore merci de ton aide mais on est à la fin et ça m'énerve de pas y arriver.

  8. #8
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    re, un peu de temps!!
    pour modifier j'ai repris tes codes tu remarques que je mets .value si expression numerique pas d'erreurs dans les cellules si texte pas d'erreurs non plus .dans l'autre sens cellule vers textboxs pas la peine les texboxs dans un user sont considerees comme du texte 'd'ailleurs c'est pour cela qu'on les convertis pour faire des calculs par val cbdl ect...
    oubli pas les conditions avec keypress majuscules ect..

    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
    Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim article As String
    Dim recupval As String
    recupval = ComboBox1.Value
    With Worksheets("Données_articles")
    i = 6
    Do While .Cells(i, 3) <> ""
        If recupval = .Cells(i, 3) Then
          .Cells(i, 7).Value = TextBox_gen
         .Cells(i, 8).Value = TextBox_qté
         .Cells(i, 4).Value = TextBox_famille
         .Cells(i, 5).Value = TextBox_designinterne
         .Cells(i, 6).Value = TextBox_designexterne
         .Cells(i, 9).Value = TextBox_prix
            End If
        i = i + 1
    Loop
    End With
    End Sub
    j'ai regarde l'userform supprimer vu que tu pars dans l'optique de supprimer autant selectionner la ligne quand tu change dans ta combo plus simple ton prof peu le comprendre!!! j'ai seulement rajoute une ligne a la fin de ton code de base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(ComboBox1.ListIndex + 6, 1).EntireRow.Select

    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
    Private Sub ComboBox1_Change()
    Dim i As Integer
    Dim recupval As String
    recupval = ComboBox1.Value
    With Worksheets("Données_articles")
    i = 6
    Do While .Cells(i, 3) <> ""
        If recupval = .Cells(i, 3) Then
        TextBox_gen.Text = .Cells(i, 7)
        TextBox_qté = .Cells(i, 8)
        TextBox_famille = .Cells(i, 4)
            TextBox_designinterne = .Cells(i, 5)
        TextBox_designexterne = .Cells(i, 6)
        TextBox_prix = .Cells(i, 9)
            End If
        i = i + 1
    Loop
    End With
    Cells(ComboBox1.ListIndex + 6, 1).EntireRow.Select 'ligne rajoute
    End Sub
    pour le message de confirmation j' ai modifie autrement tu risque de tourner en boucle ne plus pouvoir sortir!!!
    de plus vu que la ligne est selectionne par defaut pas la peine de faire une recherche

    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
    Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim recupval As String
    Dim reponse As String
    reponse = MsgBox("Voulez vous bien supprimer cet article?", vbQuestion + vbYesNo) 'boite de dialogue
    'pour demander la suppression
    If reponse = vbYes Then
        Selection.Delete Shift:=xlUp
     MsgBox "L'article selectionné est bien supprimé", vbExclamation
      Unload Me 'rajoute
      supprimer_fiche_article.Show 'rajoute
      Else
      Exit Sub
      End If
    End Sub

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/03/2014, 10h30
  2. Remplacer des données de shapes via un tableau Excel
    Par tiber33 dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 25/09/2013, 16h53
  3. Vérification des données importées depuis excel
    Par noakiss dans le forum VBA Access
    Réponses: 0
    Dernier message: 31/03/2008, 11h21
  4. Modifier des formes Visio avec des données Excel
    Par Hubs702 dans le forum Visio
    Réponses: 4
    Dernier message: 25/06/2007, 07h19
  5. Récupérer des données Excel vers Interbase ...
    Par Djedjeridoo dans le forum InterBase
    Réponses: 2
    Dernier message: 20/07/2003, 18h16

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