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 :

Alternativa à utilisation de TAG ds fenêtre propriété Combobox et listbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    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
    Points : 57
    Points
    57
    Par défaut Alternativa à utilisation de TAG ds fenêtre propriété Combobox et listbox
    Bonjour
    En préambule, je ne suis qu'un piètre bricoleur en VBA, j'ai bcp de mal à tout articuler.
    Je vais tenter de me faire comprendre.

    J'utilise des Userform pour remplir et modifier des données dans des tables excel.
    Nom : USFcultures.PNG
Affichages : 527
Taille : 14,8 Ko
    Les données sont chargées à partir de la fonction TAG de la fenêtre propriété des Combobox/Listbox, les données des listbox sont modifiable par une liste chargée en rowsource.

    Ces données sont ensuite modifiées dans la table à la ligne date mentionnée dans la listbox Date (verrouillée au chargement) et à la bonne colonne à partir du tag.

    Extrait table:
    Nom : extrait table.PNG
Affichages : 372
Taille : 29,4 Ko

    Mon classeur contient une vingtaine de formulaires et je le fait évoluer assez régulièrement. Je suis sur un projet Access, mais encore du travail, donc pour l'instant travail avec ce fichier qui doit rester fiable.
    Pour des raisons de clarté et de classement, il m'arrive d'ajouter des colonnes à mes tables, je suis donc à chaque fois obligé de modifier tout les TAG des formulaires qui y sont liés avec les risques d'erreur que cela comporte. Je pourrais les ajouter les nouvelles données en fin de liste, mais ça devient vite un fouillis et difficile à retrouver.

    Existe t il une possibilité de charger le données dans les différentes box à partir de nom (nom des entêtes de colonnes par ex ou autre), j'ai essayé plusieurs solution sans succès.

    Code lié au userform, toute critique est bienvenue, il y a certainement de l'aménagement et du nettoyage à faire.

    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
    66
    67
    68
    69
    70
    71
    72
     
    Option Explicit
    Dim Ligne As Long
     
     
    Private Sub UserForm_Initialize()
    Dim j As Long
     
      With Sheets("Data_Système")
        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")
        CboDate.Value = Sheets("Fiche").Range("Date_Visite")
        Me.CboDate.Enabled = False
     
     
       End Sub
     
    Private Sub CboDate_Change()
    Dim Ctrl As Control
    Dim Colonne As Integer
     
      If Me.CboDate.ListIndex = -1 Then Exit Sub
      With Sheets("Data_Système")
        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()
      Dim Ctrl As Control
      Dim Colonne As Integer
      Dim Ligne As Long
      Dim x As Integer
     
         If Me.CboDate.ListIndex = -1 Then Exit Sub
          Ligne = Me.CboDate.ListIndex + 4
            With Sheets("Data_Système")
               For Each Ctrl In Me.Controls
                         Colonne = CInt("0" & Ctrl.Tag)
                  If Colonne > 0 Then
                    .Cells(Ligne, Colonne) = TrouveType(Ctrl)
                  End If
            Next Ctrl
            For x = 1 To 10
                If CDbl("0" & Trim("" & Sheets("Fiche").Range("Rdt_C" & x).Value)) <> 0 Then
               .Cells(Ligne, 60 + x) = Sheets("Fiche").Range("coût_Ha_C" & x) / Sheets("Fiche").Range("Rdt_C" & x)
               Else:  .Cells(Ligne, 60 + x) = 0
                  End If
    Next
     
            End With
    Unload Me
    End Sub
     
     
    Private Sub CmdAnnuler_Click()
    Unload Me
    End Sub
    Merci de votre aide.
    Joël

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je ne suis pas certain que les tag posent un problème!

    Ce qui pose problème c'est que la source peut varier dans son colonage.

    D'abord question primordiale, le nom de colonne sont il toujours les mêmes?

    Si oui, tu peux grâce à un dictionnaire récupérer le numéro de chaque colonne et ainsi définir ton tag!

    Je suis sur mon téléphone portable,je ne pourrais pas te donner d'exemple, mais c'est juste une piste que d'autres pourront t'aider à suivre si l'idée te convient!

    Édite: Je dois rajouter qu'il faudra bien remplacer tes tag par autre chose, alors autan les utiliser!
    Dernière modification par Invité ; 07/07/2015 à 17h49.

  3. #3
    Membre du Club
    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
    Points : 57
    Points
    57
    Par défaut
    Bonjour Robert et merci

    Effectivement, ce ne sont peut être pas les Tag qui ne sont pas adaptés mais moi qui ne sait pas les utiliser.

    Ce que je cherche, c'est à ne pas avoir à modifier tous les Tag à chaque ajout, suppression ou modification d'une table. Par exemple à la dernière modif, j'ai ajouté quelques colonnes en début de la table contenant 114 colonnes, j'ai du modifier une centaine de tag dans le formulaire, j'ai fait quelques erreurs, remodifé, revérifié... Et le risque c'est qu'une erreur passe inaperçue.

    Chaque colonne à un nom identique, sauf exception, je ne suis plus amené à les modifier, seulement à les déplacer en cas d'ajout.

    Le nombre des données n'est pas exorbitants non plus, j'ai 5 tables contenant, 70, 57, 114, 26 et 35 soit 302 colonnes de données au total.

    Chacune des colonnes à un nom différents (peut être à modifier pour les utiliser, ils sont avec caractères accentuées, espace, /...)

    Joël

Discussions similaires

  1. [debutant][struts]: utilisation du tag <logic:equal ...&g
    Par sleepy2002 dans le forum Struts 1
    Réponses: 13
    Dernier message: 23/11/2006, 17h04
  2. utiliser un tag de struts dans un taglibs
    Par Boosters dans le forum Struts 1
    Réponses: 3
    Dernier message: 19/06/2006, 18h18
  3. Lien pour afficher fenêtre Propriétés système.
    Par keny dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/07/2005, 18h13
  4. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  5. Merci d'utiliser les TAG
    Par Cian dans le forum Etudes
    Réponses: 0
    Dernier message: 07/08/2003, 17h46

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