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 :

Mémorisations de valeurs


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Educateur Animateur
    Inscrit en
    Février 2013
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur Animateur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 132
    Points : 63
    Points
    63
    Par défaut Mémorisations de valeurs
    Bonjour,

    Je viens vous solliciter pour le souci suivant :

    j'ai un userform4 avec une listbox1 dans laquelle je peut selectionner une ligne pour modification... au clic sur "Modifier" (CommandButton4), j'envoi les données correspondantes dans userForm10 en répartissant dans des textbox.

    Seulement lorsque je fais une modification et que je valide, j'affiche un message de vérification avec les anciennes et nouvelles données pour chaque textbox...

    Le Problème --> il m'affiche bien les nouvelles valeurs, mais pas les anciennes et je n'arrive pas à la faire mémoriser...

    j'utilise ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        With Me
            Nom = .TextBox1
            Prenom = .TextBox2
            Classe = .TextBox3
            Motif = .TextBox4
            Personne = .TextBox5
            Retenue = .TextBox6
            Envoi = .TextBox7
            Travail = .CheckBox1
        End With

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut Bonjour,
    A quoi correspondent les valeur nom, etc...

    Place les anciennes valeurs dans la propirété "TAg" des textbox et compare.

    Explique nous mieux.

    ESVBA

  3. #3
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Bonjour

    As tu essayé en enregistrant les anciennes valeurs sous forme de variable genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public nom ancien as string
     
    userform initialize
    Nomancien = range("a1")
    listbox1=nomancien
     
    Private sub commandbutton('avant enregistrement)
    listbox1ancien = nomancien
    listbox1nouveau = Nomnouveau 
     
    Privatesub commandbutton('enregistrement)
    Range("a1")=nomnouveau

  4. #4
    Membre du Club
    Homme Profil pro
    Educateur Animateur
    Inscrit en
    Février 2013
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur Animateur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 132
    Points : 63
    Points
    63
    Par défaut
    Chaque valeur correspond une colonne dans une ligne de ma listbox

    j'envoie bien les données où je veux mais c'est après, pour faire la comparaison entre les valeurs qui avaient été renvoyées et les nouvelles que je rentre à la place, que j'ai un souci...

    pour mettre une valeur dans Tag, il faudrait que ça reste la même tout le temps non !?

  5. #5
    Membre du Club
    Homme Profil pro
    Educateur Animateur
    Inscrit en
    Février 2013
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur Animateur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 132
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par keygen08 Voir le message
    Private sub commandbutton('avant enregistrement)
    listbox1ancien = nomancien
    listbox1nouveau = Nomnouveau

    Est-ce que ça peut vouloir dire dans le userform qui envoi les infos à l'autre... !?

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut
    Voici la structure de code à laquelle je pensais :

    Code Formulaire "UserForm4" avec la ListBox1 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub ListBox1_Click()
        UserForm10.TextBox1.Tag = ListBox1.List(ListBox1.ListIndex, 1)
        UserForm10.TextBox1.Text = ListBox1.List(ListBox1.ListIndex, 1)
     
        UserForm10.TextBox2.Tag = UserForm4.ListBox1.List(ListBox1.ListIndex, 2)
        'Etc...
    End Sub
    Code :Dans Formulaire "UserForm10" avec les textBox : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub CommandButton4_Click()  'Bouton modifier
        If TextBox1.Text <> TextBox1.Tag Then  'Si texte actuel <> Ancienttexte alors
            '--
        End If
     
         'Etc...
    End Sub
    ESVBA

  7. #7
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Oui, une fois la variable declaré en public les valeurs sont capable de passer d'un userform sur l'autre.
    Il est trés difficile de te repondre sans connaitre le procédé exact que tu veux utiliser.

    Les ancienne et nouvelle valeurs s'affiche t'elle dans des textbox differente dans un meme userform ou simplement à l'aide d'un messagebox.
    Tu n'avais il me semble qu'une feuille dans ton classeur donc je suppose que la nouvelle valeur vas prendre la place de l'ancienne valeur sur cette meme feuille.
    Je pense donc qu'il te faut extraire A de la feuille pour charger le textbox, le modifier en B.
    montrer a l'utilisateur le remplacement a effectuer donc, a ce que j'ai compris, charger un nouveau userform avec les valeurs A et B dans des textbox different, puis, lors de la validation envoyé B vers ta feuille.
    Pour cela je charge des variable a l'ouverture de mon premier userform qui passeront dans le 2 userform lors de l'affichage de celui-ci.

  8. #8
    Membre du Club
    Homme Profil pro
    Educateur Animateur
    Inscrit en
    Février 2013
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur Animateur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 132
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par keygen08 Voir le message
    Les ancienne et nouvelle valeurs s'affiche t'elle dans des textbox differente dans un meme userform ou simplement à l'aide d'un messagebox.
    En fait... les anciennes valeurs s'affichent dans le userform via autant de textbox que de valeurs...

    Je modifie ces valeurs à la place dans le même texbox...

    Ensuite un message me permet de comparer avant/après...

  9. #9
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Donc un machin ressemblant a cela te suffirai.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    anciennom = Range("a1")
    ancientitre = Range("b1")
    MsgBox ("l'ancienne valeur est " & anciennom & ", la nouvelle valeur est" & TextBox1 & Chr(10) & _
    "l'ancien titre est" & ancientitre & ",le nouveau titre est " & TextBox2)
    chr(10) te permet d'introduire un retour chariot

  10. #10
    Membre du Club
    Homme Profil pro
    Educateur Animateur
    Inscrit en
    Février 2013
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur Animateur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 132
    Points : 63
    Points
    63
    Par défaut
    Ah ok c'est aussi simple que ça !?
    je cherchais à me compliquer la vie...

    par contre avec ton code, il va savoir automatiquement retrouver la ligne dont il est question dans la feuille !?

  11. #11
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Charge anciennom et ancientitre en meme temps que textox lors de l'ouverture de userform

    Oui c'est simple,... si on sait le faire

  12. #12
    Membre du Club
    Homme Profil pro
    Educateur Animateur
    Inscrit en
    Février 2013
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur Animateur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 132
    Points : 63
    Points
    63
    Par défaut
    d'accord, mais je veux dire... un fois le msbox affiché, si je valide il va bien modifier la ligne concernée !?

    je comprend pas où il repère la ligne dans la feuille...

  13. #13
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut
    Je ne suis plus dans la course mais en relisant...

    Code Formulaire "UserForm4" avec la ListBox1 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub CommandButton4_Click()  'Bouton modifier
        'Place dans les textbox
        UserForm10.TextBox1.Tag = ListBox1.List(ListBox1.ListIndex, 1)
        UserForm10.TextBox1.Text = ListBox1.List(ListBox1.ListIndex, 1)
     
        UserForm10.TextBox2.Tag = ListBox1.List(ListBox1.ListIndex, 2)
        'Etc pour les autres textbox
    End Sub


    Code Dans Formulaire "userForm10" avec les textBox : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    'Pour premier textbox
    Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        Dim Rep
     
        If TextBox1.Tag <> TextBox1.Value Then
            Rep = MsgBox("Confirmez-vous le remplacement de " & TextBox1.Tag & " par " & TextBox1.Value, vbYesNo, "Confirmation")
            'Traitement de la réponse
            If Rep = vbYes Then 
                  TextBox1.Tag = TextBox1.Value
                  'et la suite...
                 'A charge de remplir la listbox
            End If
        End If
    End Sub

    ESVBA

  14. #14
    Membre du Club
    Homme Profil pro
    Educateur Animateur
    Inscrit en
    Février 2013
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur Animateur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 132
    Points : 63
    Points
    63
    Par défaut
    MErci pour ta réponse ESVBA...

    si je comprend bien ton code, il va modifier les anciennes valeurs par les nouvelles dans la listbox, mais va-t-il aussi le faire pour la feuille de donnée !?

  15. #15
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Bonjour
    Je ne comprend pas bien ou tu bloque, la reponse attendu etait peut-etre plutot dans ce genre la.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    reponse = MsgBox("voulez vous remplacer" & anciennom & " par "& texbox1, vbYesNo)
        Select Case reponse
            Case vbYes
            'Code a aplliquer si l'on dit OK      
      range ("a1").value = textbox1
     
            Case vbNo
            'Code a appliquer si l'on dit non
     unload usf4
        End Select

  16. #16
    Membre du Club
    Homme Profil pro
    Educateur Animateur
    Inscrit en
    Février 2013
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur Animateur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 132
    Points : 63
    Points
    63
    Par défaut
    Ok c'est bon... avec vos deux propositions, je me suis adapté quelquechose...

    Merci à vous...

    Mon souci n'est donc plus sur le message mais sur la modification des données de ma feuille1

    A la fin de mon code j'ai ça :
    et l'erreur 1004 - Erreur définie par l'application ou par l'objet

    Je ne comprend pas... Est-ce que c'est parcequ'il ne sait pas à quelle ligne de la feuille il doit travailler... !?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        With ActiveSheet
         .Range("A" & Me.TextBox1) = TextBox1   'On écrit dans chaque colonne les valeurs des différents controls
         .Range("B" & Me.TextBox1) = TextBox2   'Idem
         .Range("C" & Me.TextBox1) = TextBox3   'Idem
         .Range("D" & Me.TextBox1) = TextBox6   'Idem
         .Range("E" & Me.TextBox1) = TextBox5   'Idem
         .Range("F" & Me.TextBox1) = TextBox6   'Idem
         .Range("H" & Me.TextBox1) = TextBox7   'Idem
         .Range("G" & Me.TextBox1) = CheckBox1  'Idem
        End With

  17. #17
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      LigActive=1   'Ligne à déterminer suivant l'emplacement de la saisie pour modification
     
     With ActiveSheet
         .Range("A" & LigActive) = Me.TextBox1   'On écrit dans chaque colonne les valeurs des différents controls
         .Range("B" & LigActive) = Me.TextBox2   'Idem 
      '...
    Le contenu des textbox ce n'est pas le numéro de la ligne ?

    ESVBA

  18. #18
    Membre du Club
    Homme Profil pro
    Educateur Animateur
    Inscrit en
    Février 2013
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur Animateur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 132
    Points : 63
    Points
    63
    Par défaut
    Euh...

    chaque textbox correspond à une colonne de la ligne à modifier...

  19. #19
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Oui
    le contenu de textbox1 va en cellule A1 donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    range("a1").value= textbox1
    range("b1").value = textbox2 etc
    Ou comme te l'indique ESVBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ligactive=1
    .Range("A" & LigActive) = Me.TextBox1

  20. #20
    Membre du Club
    Homme Profil pro
    Educateur Animateur
    Inscrit en
    Février 2013
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur Animateur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 132
    Points : 63
    Points
    63
    Par défaut
    Ben... pas forcément puisque la ligne que je selectionne dans ma listbox peut correspondre à une autre ligne que la ligne 1

    c'est là tout mon problème... puisqu'il faut retrouver à quelle ligne de la feuille la ligne sélectionnée dans la listbox (après tri par des combobox) fait référence...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AC-97] Mémoriser les valeurs des champs pour usage ultérieur
    Par docjo dans le forum VBA Access
    Réponses: 4
    Dernier message: 12/10/2009, 15h52
  2. mémoriser la valeur retournée d'un select.
    Par DEV-10 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 23/07/2009, 22h11
  3. [FAQ][VBA-W] Mémoriser la valeur de variables word
    Par SfJ5Rpw8 dans le forum Contribuez
    Réponses: 1
    Dernier message: 24/05/2007, 18h13
  4. Réponses: 5
    Dernier message: 08/05/2007, 12h56
  5. Mémoriser les valeurs d'un champ calculé
    Par pierrot67 dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/01/2007, 12h07

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