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 :

Manipulation de variable [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    medecine
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : medecine
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Par défaut Manipulation de variable
    Bonjour je suis novice et un problème se pose

    je crée un UF de cases à cocher
    je voudrais à l'initialisation du UF que les propriétés .caption soient modifiées sur base d'une liste de noms


    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
    '+++ j'essaye ceci mais il bloque en ligne  (15)
     
    Sub UserForm_Activate()
     
    Dim NumCb As String
    Dim Compteur As Integer
    Dim NumCel As String
    Dim CompteCel As Integer
     
    Compteur = 1
    CompteCel = 13
     
    For Compteur = 1 To 10
    NumCb = "CB(compteur)"
    NmCel = "B(comptecel)"
     
    (15)    Set Cb(Compteur).Caption = Sheets("Ftravail").Range(NumCel).Value
     
    CompteCel = CompteCel + 1
    Next Compteur
     
     
     
    '+++ comme ci dessous cela marche
    'CB1.Caption = Sheets("Ftravail").Range("B13").Value
    'CB2.Caption = Sheets("Ftravail").Range("B14").Value
    'CB3.Caption = Sheets("Ftravail").Range("B15").Value
    'CB4.Caption = Sheets("Ftravail").Range("B16").Value
    'CB5.Caption = Sheets("Ftravail").Range("B17").Value
    'CB6.Caption = Sheets("Ftravail").Range("B18").Value
    'CB7.Caption = Sheets("Ftravail").Range("B19").Value
    'CB8.Caption = Sheets("Ftravail").Range("B20").Value
    'CB9.Caption = Sheets("Ftravail").Range("B21").Value
    'CB10.Caption = Sheets("Ftravail").Range("B22").Value
     
    End Sub
    Pourriez-vous m'aider SVP

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Par défaut
    Bonjour,
    Essayez de remplacer ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Compteur = 1 To 10
     NumCb = "CB(compteur)"
     NmCel = "B(comptecel)"
    Par ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Compteur = 1 To 10
     NumCb = CB(compteur)
     NmCel = B(comptecel)

  3. #3
    Membre averti
    Homme Profil pro
    medecine
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : medecine
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Par défaut
    Merci de cette réponse rapide,

    malheureusement cela ne marche par il bloque sur la ligne 2 sur CB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Compteur = 1 To 10
      NumCb = CB(compteur)
      NmCel = B(comptecel)
    merci de votre aide
    je dois m'absenter je suis de garde
    je pousuivrai dès mon retour

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Par défaut
    Re,
    Je crois que j'ai mal compris le problème
    Il faudrait plutôt faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Compteur = 1 To 10
     NumCb = "CB" & compteur
     NmCel = "B" & comptecel

  5. #5
    Membre averti
    Homme Profil pro
    medecine
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : medecine
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Par défaut
    bonjour,
    merci du suivi

    j'ai essayé avec un tableau dim as variant et string
    cela ne marche pas

    j'ai controlé par des msgbox comme ci-dessous
    les msgbox me donnent bien les variables qui s'incrémentent CB1 B13 et ....CB1Caption
    mais le prg bloque en ligne 21 par erreur de compilation par qualificateur incorrect
    je suppute qu'il faudrait introduire un "set"?? mais quid?

    merci

    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
     
    Sub UserForm_Activate()
     
      Dim NumCb As String
      Dim Compteur As Integer
      Dim NumCel As String
      Dim CompteCel As Integer
      'Dim Cb(60) As String
      'Dim B(60) As String
      Dim nomtransit As String
     
       Compteur = 1
      CompteCel = 13
     
      For Compteur = 1 To 3
         NumCb = "CB" & (Compteur)
         NumCel = "B" & (CompteCel)
         MsgBox NumCb & "  " & NumCel
         nomtransit = NumCb & ".Caption
          MsgBox nomtransit
        nomtransit.Value = Sheets("Ftravail").Range(NumCel).Value
     
      CompteCel = CompteCel + 1
     
       Next Compteur
       'CB1.Caption = Sheets("Ftravail").Range("B13").Value
        'CB2.Caption = Sheets("Ftravail").Range("B14").Value
        End Sub

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    qu'est censé faire cette ligne 21 .? modifier la valeur d'un contrôle sur ton userform ? quel est le nom de ce contrôle ? que contient la variable nomtransit ?

  7. #7
    Membre averti
    Homme Profil pro
    medecine
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : medecine
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Par défaut
    Bonjour,

    j'ai corrigé la ligne 21 en supprimant .Value, et le prg ne plante plus mais il ne fonctionne tjs pas.

    le nom du contrôle est CB1
    il varie de CB1 à CB10 car il y a 10 cases à cocher
    la variable nomtransit contient CB1.caption, afin dy inputer le libellé de la case à cocher
    ce libellé varie sur base d'une liste de nom
    repris selon la formule Sheets("Ftravail").Range("B13").Value, de B13 à B23r

    en fait si je n'utilise que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'CB1.Caption = Sheets("Ftravail").Range("B13").Value
    'CB2.Caption = Sheets("Ftravail").Range("B14").Value
    'CB3.Caption = Sheets("Ftravail").Range("B15").Value
    jusqu'à CB10

    CELA FONCTIONNE!!

    mais ce n'est pas très esthétique ni pratique (s'il y a beaucoup de cases)
    car je dois faire de même pour cocher ou décocher automatiquement toutes les cases à cocher

    Merci


    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
    Sub UserForm_Activate()
     
    Dim NumCb As String
    Dim Compteur As Integer
    Dim NumCel As String
    Dim CompteCel As Integer
    Dim nomtransit As String
     
    Compteur = 1
    CompteCel = 13
     
    For Compteur = 1 To 3
    NumCb = "CB" & Compteur
    NumCel = "B" & CompteCel
    'MsgBox NumCb & "  " & NumCel
     
    nomtransit = NumCb & ".Caption"
    MsgBox nomtransit
     
    nomtransit = Sheets("Ftravail").Range(NumCel).Value   ' c'est ici que le bas blaisse   nomtransit devrait être "CBnn.caption"  et pas la variable ???
     
    CompteCel = CompteCel + 1
     
    Next Compteur
    'CB1.Caption = Sheets("Ftravail").Range("B13").Value
    'CB2.Caption = Sheets("Ftravail").Range("B14").Value
    'CB3.Caption = Sheets("Ftravail").Range("B15").Value
    'CB4.Caption = Sheets("Ftravail").Range("B16").Value
    'CB5.Caption = Sheets("Ftravail").Range("B17").Value
    'CB6.Caption = Sheets("Ftravail").Range("B18").Value
    'CB7.Caption = Sheets("Ftravail").Range("B19").Value
    'CB8.Caption = Sheets("Ftravail").Range("B20").Value
    'CB9.Caption = Sheets("Ftravail").Range("B21").Value
    'CB10.Caption = Sheets("Ftravail").Range("B22").Value
     
    End Sub

  8. #8
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir,

    je suis pas vraiment sur que ton code soit plus lisible (esthétique ...) écrit avec une boucle FOR de 5 ou 6 lignes pour remplacer les 10 lignes initiales beaucoup plus parlante ...

    utilise la collection controls ..

    ligne 20 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Controls(NumCb).caption = Sheets("Ftravail").Range(NumCel).Value

  9. #9
    Membre averti
    Homme Profil pro
    medecine
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : medecine
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Par défaut
    Bonjour,

    Magnifique cela fonctione;
    Effectivement le code est probablement moins lisible MAIS
    je vais pouvoir faire varier les bornes de départ et de fin en fonction du nombre de médecins inscrits et ne plus être bloqué par un nombre définitivement fixé
    je vais également pouvoir automatiser le décochage et le cochage global

    et cette technique est et sera adaptable à d'autre contrôle

    OUPS! Champagne "virtuel" pour toi
    je t'en remercie

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

Discussions similaires

  1. Manipuler des variables/valeurs
    Par ttone dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2008, 17h13
  2. [Bash] Question sur la manipulation de variables
    Par sliderman dans le forum Linux
    Réponses: 6
    Dernier message: 03/08/2007, 08h36
  3. Manipulation de variable
    Par mejrs dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/08/2007, 07h37
  4. Manipulation des variables.
    Par fred61 dans le forum C
    Réponses: 12
    Dernier message: 22/04/2007, 19h35
  5. [Tableaux] manipulation de variable
    Par mectouzen dans le forum Langage
    Réponses: 12
    Dernier message: 02/02/2006, 11h31

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