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 :

Remplacer une Combobox par une textbox dans un Userfrom [XL-2013]


Sujet :

Macros et VBA Excel

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Profession indépendande
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Profession indépendande
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Par défaut Remplacer une Combobox par une textbox dans un Userfrom
    Bonjour
    Tout d'abord, merci de votre aide d'expert, pour quelqu'un de néophyte comme moi, elle est particulièrement précieuse.

    J'ai créé avec l'aide de ce forum, un Userform permettant à partir d'une combobox de modifier les données d'un tableau, code ci-dessous.
    Ce formulaire fonctionne très bien pour ce qu'on lui demande, mais ,après adaptation à mon classeur de travail, et notamment l'adjonction de quelques formules de calcul simple, il me génère des erreur de données si je ne prête pas attention à la date de la combobox, c'est à dire si elle ne correspond pas à la date du de la cellule en première feuille.

    En réalité, le formulaire ne doit modifier et calculer qu'une série de données à la fois et correspondant à la date de la feuille 1 et surtout le copier à la bonne date de la feuille données. Le plus simple c'est de tester dans ma exemple.

    Pour ce faire la solution me semble être de remplacer la "combobox" CboDate dans l'exemple et la remplacer par une textbox (ou autre) non modifiable dans le formulaire et chargée de la date de la feuille 1 (cellule F7 nommée "LaDate" dans le classeur en exemple). Si une autre solution existe, plus facile à réaliser ou plus fiable, je suis également preneur.

    Code que je souhaite 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
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    Option Explicit
    Dim Ligne As Long
     
     
    Private Sub UserForm_Initialize()
    'CboDate = Date_Visite
    Dim J As Long
     
      With Sheets("Données")
        For J = 4 To .Range("A" & Rows.Count).End(xlUp).Row
          Me.CboDate.AddItem .Range("A" & J)
        Next J
      End With
     
    CboDate.Value = Format(CboDate.Value, "dd/mm/yy")
    End Sub
     
    Private Sub CboDate_Change()
    Dim Ctrl As Control
    Dim Colonne As Integer
     
      If Me.CboDate.ListIndex = -1 Then Exit Sub
      With Sheets("Données")
        Ligne = Me.CboDate.ListIndex + 4
        For Each Ctrl In Me.Controls
          Colonne = CInt("0" & Ctrl.Tag)
          If Colonne > 0 Then Ctrl = .Cells(Ligne, Colonne)
        Next Ctrl
      End With
    End Sub
    Function TrouveType(V)
    TrouveType = V
    If IsDate(TrouveType) = True And InStr(TrouveType, "/") <> 0 And InStr(TrouveType, ":") <> 0 Then TrouveType = Format(TrouveType, "yyyy-mm-dd hh:mm"): Exit Function
    If IsDate(TrouveType) = True And InStr(TrouveType, "/") <> 0 Then TrouveType = Format(TrouveType, "yyyy-mm-dd"): Exit Function
    If IsNumeric(Replace(TrouveType, ".", ",")) = True Then TrouveType = Replace(TrouveType, ",", "."): Exit Function
    End Function
     
     
    Private Sub CmdModifier_Click()
     
        ' Modifier
        Dim Ctrl As Control
        Dim Colonne As Integer
        Dim Ligne As Long
     
         If Me.CboDate.ListIndex = -1 Then Exit Sub
         Ligne = Me.CboDate.ListIndex + 4
         With Sheets("Données")
             For Each Ctrl In Me.Controls
                 Colonne = Val(Ctrl.Tag)
                 If Colonne > 0 Then
                       .Cells(Ligne, Colonne) = TrouveType(Ctrl)
                     End If
                          Next Ctrl
                 .Cells(Ligne, Sheets("Données").UsedRange.Columns.Count) = Sheets("Feuil1").Range("C24")
         End With
       Unload Me
     
    End Sub
     
     
    Private Sub CmdAnnuler_Click()
    Unload Me
    End Sub
    Merci par avance de votre expertise
    Joël
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. lier une combobox et un textbox dans un datagrid
    Par guigui14760 dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 06/09/2010, 13h25
  2. Réponses: 2
    Dernier message: 18/06/2009, 15h09
  3. Réponses: 0
    Dernier message: 17/06/2009, 23h26
  4. [Toutes versions] Remplacer "#N/A" par une valeur par défaut
    Par canary dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/05/2009, 11h23
  5. [RegEx] Remplacer dernière occurence d'une chaine par une autre
    Par webjoujou dans le forum Langage
    Réponses: 3
    Dernier message: 12/11/2008, 17h58

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