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

  1. #1
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 41
    Points
    41
    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 sénior 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
    Points : 31 877
    Points
    31 877
    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
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 41
    Points
    41
    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 sénior 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
    Points : 31 877
    Points
    31 877
    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
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 41
    Points
    41
    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 sénior 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
    Points : 31 877
    Points
    31 877
    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
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  7. #7
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 41
    Points
    41
    Par défaut
    Bonjour,

    J'essaye d'appliquer le code que tu m'as proposé à ma userform, mais j'ai des difficultés à appeler la cellule depuis laquelle ma userform c'est lancée.

    Ma userform se lance de la façon suivante:
    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 Worksheet_SelectionChange(ByVal Target As Range)
     
      If Not Intersect(Range("I11:I350"), Target) Is Nothing And Target.Value <> "" Then
     
         choix_densité = MsgBox("Voulez-vous conserver la valeur de la base de données?", vbYesNo, "Message de Confirmation")
     
             If choix_densité = vbYes Then
                Exit Sub
             Else
                'Indique l'unité dans le label de la userforme1
                UserForm1.Lbl_unitdensit.Caption = Target.Offset(0, -1).Value
                'Permet de mettre le curseur directement dans la textbox
                UserForm1.Ttb_newdensit.SetFocus
                UserForm1.Show
             End If
      End If
     
    End Sub
    Ensuite lorsque je clique sur le boutton "Valider", j'aimerais pouvoir atteindre la cellule de la base de donnée et lui affecter la valeur saisie dans la userform.

    Mon problème est de retrouver la cellule d'où la userform s'est lancée depuis la feuille Trame:

    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
    Private Sub CmdB_Valid_Click()
        
        If Not Right(Ttb_newdensit, 1) <> "" Then
              MsgBox "Veuillez entrer une valeur de densité"
              Ttb_newdensit.SetFocus
              Exit Sub
        End If
          
          
        Dim b As Range
        Dim c As Range
    
            Set b = Sheets("Trame Gestion Déchets").Columns(9) 'colonne densité de la feuille Trame
            If Intersect(Range("I11:I350"), Target) Then 'selectionner le cellule du lancement de la userform
                    With Sheets("Données MEDECO type")
                    Set c = .Columns(3).Find(b.Offset(0, -3).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 Sub
    Après ce qui est en rouge je n'ai pas pu encore tester.

    Peux tu me dire s'il y a un moyen d'appeler directement la cellule selectionnée?


    Amicalement,

    deamonRav

    J'ai remodifié le boutton "Valider", en ayant repris la fin du code,pour essayer de le rendre plus clair (à mes yeux), mais j'ai toujours le même problème:
    Retrouver la cellule qui lance la userform de la feuille Trame

    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
    Private Sub CmdB_Valid_Click()
     
        If Not Right(Ttb_newdensit, 1) <> "" Then
              MsgBox "Veuillez entrer une valeur de densité"
              Ttb_newdensit.SetFocus
              Exit Sub
        End If
     
        Dim b As Range
        Dim c As Range
            With Sheets("Trame Gestion Déchets").Columns(9) 'colonne densité de la feuille Trame
            Set b = .ActiveCell 'selectionner le cellule du lancement de la userform
            End With
     
                With Sheets("Données MEDECO type")
                    Set c = .Columns(3).Find(b.Offset(0, -3).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, 3).Value = InputBox("Nouvelle densité de: " & Target.Offset(0, -3).Value) 'on rempolace l'ancienne valeur
                        Target.Value = c.Offset(0, 3).Value  'on récupère la nouvelle densité dans feuille trame
                    End If
                    Set b = Nothing
                    Set c = Nothing
                End With
     
     
    End Sub

  8. #8
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Essaie ceci,
    crée un module public, et crée une variable publique vTarget
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public vTarget As String
    ensuite, adapte tes codes comme ceci (pas testé)
    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
    44
    45
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
      If Not Intersect(Range("I11:I350"), Target) Is Nothing And Target.Value <> "" Then
     
         choix_densité = MsgBox("Voulez-vous conserver la valeur de la base de données?", vbYesNo, "Message de Confirmation")
     
             If choix_densité = vbYes Then
                Exit Sub
             Else
                vTarget = Target.Address
                Userform1.Load
                'Indique l'unité dans le label de la userforme1
                Userform1.Lbl_unitdensit.Caption = Target.Offset(0, -1).Value
                'Permet de mettre le curseur directement dans la textbox
                Userform1.Ttb_newdensit.SetFocus
                Userform1.Show
             End If
      End If
     
    End Sub
     
    Private Sub CmdB_Valid_Click()
    Dim b As Range,c As Range
     
    If Not Right(Ttb_newdensit, 1) <> "" Then  '?? Test suffisant?
          MsgBox "Veuillez entrer une valeur de densité"
          Ttb_newdensit.SetFocus
          Exit Sub
    End If
     
    Set b = Sheets("Trame Gestion Déchets").Range(vTarget) 'colonne densité de la feuille Trame
    With Sheets("Données MEDECO type")
        Set c = .Columns(3).Find(b.Offset(0, -3).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 = Ttb_newdensit 'on remplace l'ancienne valeur
            b.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 = b.Offset(0, -2).Value 'on l'ajoute dans feuille données
            .Cells(Rows.Count, "A").End(xlUp).Offset(0, 1).Value = Ttb_newdensit 'et sa densité
            b.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
    Set b = Nothing   
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  9. #9
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 41
    Points
    41
    Par défaut
    Alors j'ai créer un module avec vTarget, mais je ne comprend pas pourquoi on appelle pas le module dans les étapes qui suivent?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public sub
    Dim vTarget As String
    End Sub
    et j'ai replacé les autres morceaux de code dans l'userform et la feuille "Trame Gestion Déchets", je pense que c'est ce que tu voulais que je fasse?

    La ligne ci-dessous pose toujours un problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set b = Sheets("Trame Gestion Déchets").Range(vTarget) 'colonne densité de la feuille Trame
    Sinon par rapport au test: il n'est suffisant mais je n'avais pas copier tous les tests.

  10. #10
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Non,
    sur ton editeur vba, tu fais (dans les menus), Insertion> Module
    tu y met cette ligne, sans aucun ajout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public vTarget as string
    c'est la déclaration en publique de la variable vTarget
    accessible partout dans ton projet
    tu mets les autres code à leur places


    Edit: une coquille dans mon précédent post
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  11. #11
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 41
    Points
    41
    Par défaut
    Le problème persiste sur la même ligne, même après la modif "erreur de type 1004"

    Par contre il y a une modif que j'ai apporté à ton code te le repréciser dans mon dernier post.

    J'ai du enlever "userform1.load" car il me mettait erreur de compilation "461".

  12. #12
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Bêtise de ma part,
    il fallait à la place de userform1.load
    par contre, si tu mets ton code en entier, ou une copie simplifié de ton fichier
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  13. #13
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 41
    Points
    41
    Par défaut
    L'action Load sert à quoi?

    je t'envoi mon fichier.

    Il ne faut mettre à jour les liaisons, il doit y en avoir une qui traine et je n'arrive pas à la retrouver.

    cordialement
    Fichiers attachés Fichiers attachés

  14. #14
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Des erreurs dans tes code (tu n'as pas adapté)
    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
    'Ouverture auto de la liste à la sélection de la cellule
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Not Intersect(Range("A11:A350,C11:C350,E11:E350,F11:F350,H11:H350"), Target) Is Nothing And Target.Count = 1 Then
        SendKeys "%{up}"
    End If
     
     'Permet de ne pas sélectionner plusieurs fois le même poste
    If Not Intersect([ColA], Target) Is Nothing Then
            [ListeDispo].ClearContents
        For Each c In [Choix1]
            If IsError(Application.Match(c, Range(Cells(11, 1), Cells(65000, 1)), 0)) Then
                Sheets("Listes").[B65000].End(xlUp).Offset(1, 0) = c
            End If
        Next c
    End If
     
    If Not Intersect(Range("I11:I350"), Target) Is Nothing And Target.Value <> "" Then
     
        choix_densité = MsgBox("Voulez-vous conserver la valeur de la base de données?", vbYesNo, "Message de Confirmation")
     
        If choix_densité = vbYes Then
            Exit Sub
        Else
            vTarget = Target.Address
            Load UserForm1
            'Indique l'unité dans le label de la userforme1
            UserForm1.Lbl_unitdensit.Caption = Target.Offset(0, -1).Value
            'Permet de mettre le curseur directement dans la textbox
            UserForm1.Ttb_newdensit.SetFocus
            UserForm1.Show
        End If
    End If
    End Sub
    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
    Private Sub CmdB_Valid_Click()
     
    Dim b As Range, c As Range
     
    If Not Right(Ttb_newdensit, 1) <> "" Then  '?? Test suffisant?
          MsgBox "Veuillez entrer une valeur de densité"
          Ttb_newdensit.SetFocus
          Exit Sub
    End If
     
    Set b = Sheets("Trame Gestion Déchets").Range(vTarget) 'colonne densité de la feuille Trame
    With Sheets("Données MEDECO phase")
        Set c = .Columns(6).Find(b.Offset(0, -3).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, 3).Value = Ttb_newdensit 'on remplace l'ancienne valeur
            b.Value = c.Offset(0, 3).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 = b.Offset(0, -2).Value 'on l'ajoute dans feuille données
        '    .Cells(Rows.Count, "A").End(xlUp).Offset(0, 1).Value = Ttb_newdensit 'et sa densité
        '    b.Value = .Cells(Rows.Count, "A").End(xlUp).Offset(0, 1).Value 'on récuppère la densité du nouveau matériaux dans feuille trame
        MsgBox "matériaux inexistant"
        End If
        Set c = Nothing
        End With
    Set b = Nothing
    Unload Me
     
    End Sub
    j'ai supprimé le cas ou le matériaux n'existe pas

    tes erreurs:

    les colonnes de Données MEDECO phase où il fallait puiser les infos n'étaient pas les bons
    les noms de tes feuilles n'étaient pas les bon. tu utiliser à la place du Name de la feuille son CodeName
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  15. #15
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 41
    Points
    41
    Par défaut
    Comme ca ne marchait pas j'avais changer le nom de feuilles par leur codename pour tester et j'ai oublié de remodifier avant de t'envoyé le fichier.

    Pour ma part, le code bloque toujours sur la même ligne... tu avais réussi à le faire marcher?

  16. #16
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Avec le code de mon dernier post (lequel j'ai corrigé les noms des feuilles et le numéro des colonnes de la feuille "Données MEDECO phase", ça fonctionnait.
    seulement, avec ta demande initiale, le code change seulement la densité de la première occurrence du matériaux sélectionné.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  17. #17
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 41
    Points
    41
    Par défaut
    A la base je voulais remplacer dans le tableau "Données MEDECO type" et non "phase", il y a donc des cellules pour les 3 type de densité. Je comptais faire une imbriquation de "SI" pour affecter les valeurs saisies en fonction des différentes densité...

    Comme mon code ne marche pas sur mon fichier et qu'il marche sur le tiens, et bien je ne sais trop que faire... peut être, si tu me renvois le fichier dans lequel tu a fais les modifs, je pourrais comparer, même si je ne vois pas ce que je pourrais comparer.

    Il affiche toujours sur la même erreur... comme s'il ne trouvait pas la feuille ou vTarget.

    cordialement,

    deamonRav

  18. #18
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu n'as pas déclaré vTarget
    tu as mis alors qu'il fallait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Public vTarget As String
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  19. #19
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 41
    Points
    41
    Par défaut
    Je suis pas un néophyte pour rien.

    Vraiment un grand merci!

    J'aurais un autre petite question, maintenant je veux calculer le poids:

    poids = densité x L x l x h

    mais cela me renvoie à #valeur. Y-at-il une fonction permettant d'extraire la valeur de la cellule sachant que j'ai essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target.Offset(0,-4).value
    et qu'il ne l'applique pas non plus.

    amicalement,

    deamonRav

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