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 :

Reporter la valeur d'une textbox à un tableau de donné sur une autre feuille


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Par défaut Reporter la valeur d'une textbox à un tableau de donné sur une autre feuille
    Bonjour,

    J'aimerais utiliser une macro pour modifier une valeur d'une cellule en passant par une saisie dans une textbox, permet à l'utilisateur de remplacer ou non la valeur saisie dans la cellule correspondant au tableau de ma base de données (situé sur une autre feuille).

    Mon problème est que je ne connais pas le langage à employer pour appeler la cellule d'une autre feuille. Cette cellule doit également correspondre au matériau sélectionner de la feuille ou je lance ma Userform.

    J'espère être assez clairs pour que vous puissiez m'aiguiller...

    D'avance merci

    deamonRav

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Pas assez clair (au moins pour moi)
    La valeur d'une cellule (ici cellule A5) d'une feuille NomDeTaFeuille est donnée par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("NomDeTaFeuille").Range("A5").Value
    ou [CODE]Sheets("NomDeTaFeuille").Cells(5,1).Value

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Par défaut
    Merci à toi mercatog, je vais tenter de mieux expliciter mon problème:

    Dans une feuille "trame", je souhaite que l'utilisateur choisi un matériau et va lui donner directement une valeur de densité.
    Cette valeur de densité change en fonction des matériaux (provient d'un tableau base de données sur une autre feuille "données"). L'utilisateur doit avoir le choix de pouvoir modifier cette valeur.

    Lorsqu'il sélectionne la cellule densité sur la feuille "trame" une macro se lance et lui demande s'il veut modifier la valeur de la densité de la base de donnée.
    Si oui, alors un textbox apparait.

    Mon problème est de pouvoir identifier la cellule où remplacer la valeur saisie, par l'utilisateur, dans la feuille "données".

    Sachant que dans la feuille "trame" deux colonne avant la cellule densité j'ai mon matériau et qui est donc le même que dans la feuille "données".
    Je pense qu'il faut passer par ces cellules pour pouvoir identifier la bonne ligne de la colonne densité de la feuille "données" à modifier...


    D'avance merci pour votre aide,

    deamonRav

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    je suppose dans feuille trame tu as matériaux en colonne A et densité en colonne C
    je suppose que dans feuille données tu as matériaux en colonne A et densité en colonne B. ci joint code à mettre dans l'évènement SelectionChange de ta feuille trame (avec commentaires)
    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim c As Range
    If Target.Count = 1 And Target.Column = 3 And Target.Row > 1 Then  'la ligne 1 pour les titres
        If Target.Offset(0, -2).Value <> "" Then  'Si la cellule matériax n'est pas vide
            If MsgBox("Voulez-vous modifier la densité du matériaux: " & Target.Offset(0, -2).Value & "?", vbOKCancel) = vbOK Then
                With Sheets("données")
                    Set c = .Columns(1).Find(Target.Offset(0, -2).Value, LookIn:=xlValues, lookat:=xlWhole) 'cherche le matériaux dont la cellule densité est sélectionnée
                    If Not c Is Nothing Then  'Si le métériaux existe déjà dans feuille donnée
                        c.Offset(0, 1).Value = InputBox("Nouvelle densité de: " & Target.Offset(0, -2).Value) 'on rempolace l'ancienne valeur
                        Target.Value = c.Offset(0, 1).Value  'on récuppère la nouvelle densité dans feuille trame
                    Else    'Si matéraux n'existe pas
                        .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Value = Target.Offset(0, -2).Value 'on l'ajoute dans feuille données
                        .Cells(Rows.Count, "A").End(xlUp).Offset(0, 1).Value = InputBox("densité de: " & Target.Offset(0, -2).Value) 'et sa densité
                        Target.Value = .Cells(Rows.Count, "A").End(xlUp).Offset(0, 1).Value 'on récuppère la densité du nouveau matériaux dans feuille trame
                    End If
                    Set c = Nothing
                End With
            End If
        End If
    End If
    End Sub

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Par défaut
    Le code que tu me proposes je dois l'insérer directement dans ma feuille "trame", et dans ce cas je dois supprimer la userform que j'essayai de mettre en place?

    Par rapport à ma base de données, le fait que je veuille pouvoir l'agrandir et la modifier, ne devrais je pas passer par Access pour que l'utilisateur puisse la modifier plus facilement?

    En tout cas merci,

    deamonRav

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    j'ai mis une simple inputbox.
    passer par access, je n'en sais rien. à toi de décider sans pour autant utiliser un marteau pour écraser une mouche.
    encore
    code à mettre dans l'évènement SelectionChange de ta feuille trame
    fais d'abord un test et éventuellement adapte le code à tes besoins

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/01/2013, 12h18
  2. Réponses: 12
    Dernier message: 06/08/2010, 15h00
  3. Réponses: 12
    Dernier message: 22/07/2009, 12h00
  4. [EJB] EJB sur une PC et l'application web sur un autre
    Par hichaminfo dans le forum Java EE
    Réponses: 1
    Dernier message: 24/04/2007, 16h16
  5. Requete sur une table qui pointe 2 fois sur une autre
    Par Satch dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/01/2006, 08h48

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