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

IHM Discussion :

[VBA] Problem de suppression de composant


Sujet :

IHM

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 196
    Points : 94
    Points
    94
    Par défaut [VBA] Problem de suppression de composant
    Bonjour,
    Je suis desoler de blinder le forum a ce point, mais ce que je peux galerer...

    J'ai une Form appelee Form1 sur la quelle j'ajoute des composants par la methode CreateControl. Pour etre sur de ne pas creer un composant qui existe deja (ce qui ferai 2 composant qui ont le meme non et donc... BUG) je les supprime par la methode DeleteControl
    Mon problem c est que la suppression se passe pas bien...
    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
    Dim ctl As Control
    For Each ctl In Forms("Form1").Controls
        If Mid(ctl.Name, 1, 6) = "Tempo_" Then
            DeleteControl "Form1", ctl.Name
        End If
    Next
     
    'add the component to the Form
    Set ctl = CreateControl("Form1", acComboBox, , , , 3.4583, 0.75, 3.2917, 0.1667)
        ctl.Name = "Tempo_C_SelecSource_" & "1"
        ctl.Visible = True
    Set ctl = CreateControl("Form1", acComboBox, , , , 3.4583, 3.4688, 3.2917, 0.1667)
        ctl.Name = "Tempo_C_SelecDest_" & "1"
        ctl.Visible = True
    Set ctl = CreateControl("Form1", acTextBox, , , , 0.5833, 0.9583, 8.7917, 2.0417)
        ctl.Name = "Tempo_Text_S_" & "1"
        ctl.Visible = True
    Set ctl = CreateControl("Form1", acTextBox, , , , 0.625, 3.7083, 8.7917, 2.0417)
        ctl.Name = "Tempo_Text_D_" & "1"
        ctl.Visible = True
    Access.DoCmd.Close acForm, "Form1", acSaveYes
    Le poblem c est que, exceptee a la premiere execution de sur ma Form, y a un plantage systematique sur l'ajout de composant... en me disant qu'un composant porte le meme nom et que donc, ca va vraiment pas etre possible de creer le composant. Je dois reconnaiter je ne comprend pas: j'ai watcher la variable ctl, executer pas a pas, c est clair que la ligne de suppression est executee quand il le faut, que ctl pointe sur Nil apres la suppression, mais le composant semble toujours la.
    La question que je me pose, c est est ce que ca supprime pas le pointeur ctl mais pas le composant???

    Par ailleurs, lorsque je cree les composants, ils n'aparaissent, pas bien que je mette visible a true...

    Si quelqu'un avait l'ombre d'une reponse a m'apporter avant que je me fasse trot mal

    MERCI INFINIMENTTTT...

  2. #2
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    slt,
    Tu as essayé un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.SetWarnings False
    avant de suppr. le contrôle?
    8)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 196
    Points : 94
    Points
    94
    Par défaut
    ben, au moment de la suppression, la "machine fait semblant" que tous se passe bien, c est quand j'ajoute qu' il y a des messages d'erreurs... donc supprimer les messages, ca ne fera pas que la suppression marche mieux, non?


    Merci de votre aide

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Un début de reponse pour la visibilité.

    Citation Envoyé par l'aide sur left,top,width,height
    Expressions numériques indiquant les coordonnées du coin supérieur gauche du contrôle, exprimées en twips. (twip : Unité de mesure équivalant à 1/20e de point, ou 1/1440e de pouce. Il y a 567 twips par centimètre.)
    En fait tes controles sont tout petit donc tu ne les vois pas.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 196
    Points : 94
    Points
    94
    Par défaut
    c est bizzard ca, pour mettre les valeurs, j'ai creer un compo, je l ai mit comme je voulai et j ai noter les valeurs...

    J'essaye.

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Citation Envoyé par jesus144
    ben, au moment de la suppression, la "machine fait semblant" que tous se passe bien, c est quand j'ajoute qu' il y a des messages d'erreurs... donc supprimer les messages, ca ne fera pas que la suppression marche mieux, non?


    Merci de votre aide
    Tout à fait d'accord avec toi et j'ai beau tourner le problème dans tous les ens !!!!! ça marche pas. Elle fait réellement semblant.Même si j'enregistre aprés avir supprimer, rien n'y fait

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 196
    Points : 94
    Points
    94
    Par défaut
    ben au moins, je me dis que je ne devient pas completement fou!!!
    Pour les composant, j ai l'impression que ca ne change pas grand chose le changement de taille
    ...

    Merci Beaucoup

  8. #8
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Voila qui fonctionne : A toi de mettre en page :

    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
     
    Private Sub Commande2_Click()
    DoCmd.OpenForm "form1", acDesign
    Dim Mescontrols() As String
    Dim ctl As Control
    Dim nom As String
    Dim i As Integer, j As Integer
    j = -1
    'Etabli la liste des controles à supprimer
    For Each ctl In Forms("Form1").Controls
        If Mid(ctl.name, 1, 6) = "Tempo_" Then
           j = j + 1
           ReDim Preserve Mescontrols(j + 1)
           Mescontrols(j) = ctl.name
        End If
    Next
    'supprime les controles
    For i = 0 To j
    DeleteControl "Form1", Mescontrols(i)
    Next i
    'add the component to the Form
    Set ctl = CreateControl("Form1", acComboBox, , , , 3.4583 * 567, 0.75 * 567, 3.2917 * 567, 0.1667 * 567)
        ctl.name = "Tempo_C_SelecSource_" & "1"
        ctl.Visible = True
    Set ctl = CreateControl("Form1", acComboBox, , , , 3.4583 * 567, 3.4688 * 567, 3.2917 * 567, 0.1667 * 567)
        ctl.name = "Tempo_C_SelecDest_" & "1"
        ctl.Visible = True
    Set ctl = CreateControl("Form1", acTextBox, , , , 0.5833 * 567, 0.9583 * 567, 8.7917 * 567, 2.0417 * 567)
        ctl.name = "Tempo_Text_S_" & "1"
        ctl.Visible = True
    Set ctl = CreateControl("Form1", acTextBox, , , , 0.625 * 567, 3.7083 * 567, 8.7917 * 567, 2.0417 * 567)
        ctl.name = "Tempo_Text_D_" & "1"
        ctl.Visible = True
     
    End Sub

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 196
    Points : 94
    Points
    94
    Par défaut
    Ben, Vraiment un TRES TRES TRES gros merci, ca marche super, et mes controles sont memes apparus!

    Vraiment sympa, j'etais partie pour pas m'en tirer

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 281
    Points : 209
    Points
    209
    Par défaut
    Désolé de relancer ce vieux sujet (j'ai hésité à refaire un nouveau sujet), mais c'est juste pour avoir une information (et pour en donner une).

    J'était dans le même cas. Je voulais supprimer des controls et j'avais fais à peu près le même code que celui donné ici (car sinon dans la "liste" Forms("Form1").Controls on se perd dans les index à cause des suppressions).

    Le problème que j'ai eu, c'est que dans mes tests, je supprimais un peu de tout comme type de contrôle (label, checkbox, bouton, zone de texte...). Et c'est au bout d'un moment que j'ai compris mon problème. A chaque fois que l'on supprime un control qui est en fait un group de controls (ex : checkbox = checkbox + label), on supprime les 2 en même temps. Du coup, en supprimant la checkbox, on supprime tout le groupe, mais il reste dans le tableau Mescontrols le nom du label associé à la checkbox, d'où une erreur du type : "le contrôle n'existe pas", car il a déjà été supprimé.

    Dans mon application je ne pense pas avoir à supprimer des groupes, mais j'aurais aimé savoir s'il y avait une méthode propre pour résoudre ce problème (sans faire des test sur le type du control, puis effacer de la liste le control suivant...).


    Merci
    (pff long le post)

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

Discussions similaires

  1. [VBA-E] Probleme lenteur suppression ligne vide sur 100 lignes
    Par sebi78 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 14/05/2007, 21h24
  2. [VBA] Probleme de caractères spéciaux dans nom de classeur
    Par RedBurn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/12/2005, 20h13
  3. [VBA-A] Problème Suppression enreg en cours
    Par _developpeur_ dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2005, 21h08
  4. Réponses: 10
    Dernier message: 13/06/2005, 17h02
  5. [Excel - VBA] Problème de suppression de lignes...
    Par beholder2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2005, 18h27

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