Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1608 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Rés]Incrémentation, redimenssionnement, valeur d'une liste modifiable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Rés]Incrémentation, redimenssionnement, valeur d'une liste modifiable

n°2214939
rohffr
Posté le 04-01-2014 à 14:57:43  profilanswer
 

Bonjour,  
 
 J'ai les structure suivantes :  
 

Code :
  1. Type dataTab_sup
  2.     id As String
  3.     name As String
  4.     localisation As String
  5.     type_sup As String
  6.     ipAddr As String
  7.     numLicense As String
  8.     memPhi As String
  9.     dateAcqui As String
  10.     dd As String
  11.     os As String
  12.     resEcran As String
  13.     printer As String
  14. End Type
  15. Type local_sup
  16.     id As Integer
  17.     name As String
  18.     dataTab_s() As dataTab_sup
  19. End Type
  20. Type batiment_sup
  21.     id As Integer
  22.     name As String
  23.     local_s() As local_sup
  24. End Type


 
A la suite je déclare la variable suivante :
 

Code :
  1. Public tab_bat_sup() As batiment_sup


 
 J'ai un formulaire que je vous joins
http://cjoint.com/?0Aeo5gXhzTT
 Dans ce formulaire j'ai le code suivant :  
 

Code :
  1. Option Explicit
  2. Public indice_bat As Integer
  3. 'Initialisation du formulaire
  4. Private Sub UserForm_Initialize()
  5.     Dim cmp As Integer
  6.     On Error GoTo fin:
  7.     If UBound(tab_bat_sup) <> -1 Then
  8.         'Ajout dans la liste déroulante modifiable tous les batiments déjà créés
  9.         For cmp = 0 To UBound(tab_bat_sup)
  10.             bat_sup.AddItem tab_bat_sup(cmp).name, cmp
  11.         Next cmp
  12.     End If
  13. fin:
  14. End Sub
  15. Private Sub Suivant_bat_sup_Click()
  16.     Unload Me
  17.     Loc_form_sup.Show
  18. End Sub
  19. Private Sub Ajouter_bat_sup_Click()
  20.     'Variable statique qui permet de savoir le numero du batiment que l'on souhaite ajouter
  21.     Static i As Integer
  22.     'Variable statique initialisée à 0
  23.     ReDim Preserve tab_bat_sup(i)
  24.     tab_bat_sup(i).id = i
  25.     tab_bat_sup(i).name = CStr(bat_sup.Value)
  26.     indice_bat = i
  27.     'Incrémentation du compteur
  28.     i = i + 1
  29. End Sub


 
 
 Le but de ce code est d'enregistrer les informations saisies dans la structure et d'ajouter les noms de bâtiments dans la liste modifiable.
 
 Seulement voila ma variable i ne s'incrémente pas ! Impossible de redimensionner le tableau ! Impossible d'affecter la valeur saisie dans la liste !
 
 Une variable statique est censée garder sa valeur à chaque appel de fonction cela ne veut pas dire que l'on ne peut pas y toucher --'. J'ai vu des exemples sur le forum qui me le prouve !
 
 
 Merci d'avance  
 
 Cordialement  
 
 Winflow


Message édité par rohffr le 05-01-2014 à 18:32:15
mood
Publicité
Posté le 04-01-2014 à 14:57:43  profilanswer
 

n°2214946
Marc L
Posté le 04-01-2014 à 15:28:44  profilanswer
 

 
           Bonjour,
 
           statique oui mais peut-être plus lorsque l'Userform est déchargé !
 
           Tester  Me.Hide  à la place de  Unload Me  pour voir …
 

n°2214953
rohffr
Posté le 04-01-2014 à 16:13:57  profilanswer
 

Yes ! Comment fermer le formulaire sans perdre les données ? Parce que Hide ...

n°2214971
Marc L
Posté le 04-01-2014 à 17:22:52  profilanswer
 

 
           Pour fermer définitivement c'est bien  Unload  …
 
           Ouvrir la fenêtre des Variables locales puis placer un point d'arrêt et suivre le code et les variables via la touche F8
           afin de comprendre comment fonctionne VBA …
 

n°2214976
rohffr
Posté le 04-01-2014 à 18:15:44  profilanswer
 

i passe bien de 0 à 1 et après cela me dit qu'elle est hors contexte ce qui est vrai puisqu'elle est interne à la fonction

n°2214984
rohffr
Posté le 04-01-2014 à 19:25:47  profilanswer
 

j'ai regardé avec ce que tu m'as dit, mais comme je l'ai dit plus haut i n'est visible que dans la fonction d'ajout ...

n°2215014
Marc L
Posté le 04-01-2014 à 23:37:31  profilanswer
 

 
           Oui tout à fait normal comme elle est déclarée à l'intérieur de la procédure …
 
           Si cette variable i ne sert qu'à redimensionner la variable tableau d'après le peu de code posté,
           en fait, avec quelque peu de logique, elle n'est absolument pas nécessaire ‼
 
           Une piste ?   Regarder du côté de la fonction  UBound  par exemple …
 

n°2215028
rohffr
Posté le 05-01-2014 à 12:43:13  profilanswer
 

la variable i sert à savoir combien de fois on passe dans cette fonction et combien il y a de batiments je pense qu'elle est tout à fait nécessaire pour savoir où j'en suis dans les ajouts et seulement dans un second temps elle me sert à redimensionner mon tableau ...

n°2215046
Marc L
Posté le 05-01-2014 à 17:20:35  profilanswer
 

 
           En clair, d'une manière générale, pour incrémenter la dimension d'un tableau il n'y a pas besoin de variable
           vu que sa dimension est connue …
 

n°2215050
rohffr
Posté le 05-01-2014 à 18:30:06  profilanswer
 

je pense avoir réglé mon problème en utilisant une variable globale (pas bien) si jamais cela ne fonctionne pas comme je l'espérais j'utiliserais la technique du Ubound()+1 que tu m'as suggéré

mood
Publicité
Posté le 05-01-2014 à 18:30:06  profilanswer
 

n°2215051
rohffr
Posté le 05-01-2014 à 18:30:59  profilanswer
 

en tout cas merci beaucoup =)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Rés]Incrémentation, redimenssionnement, valeur d'une liste modifiable

 

Sujets relatifs
[Mysql] Modification d'une partie d'une valeurCopier une partie d'une liste doublement chaînée
Liste de puces sur un blog : personnalisationGarder en mémoire une liste déroulante
Enregistrer telle quelle la valeur d'un JPasswordField dans la BD[Résolu] Détecter le sens de parcours d'une liste de coordonnées
Écrire dans un txt depuis un formulaire et incrémentationAfficher une Liste.
Sumif avec intervalle de valeurProblème Scrit qui liste les fichiers
Plus de sujets relatifs à : [Rés]Incrémentation, redimenssionnement, valeur d'une liste modifiable


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR