PB dans une boucle avec la propriété Selected !!!

PB dans une boucle avec la propriété Selected !!! - VB/VBA/VBS - Programmation

Marsh Posté le 21-01-2005 à 19:45:59    

Slt,
 
Voilà j'ai créé un code qui me permet de copier dans un repertoire les photos que j'ai préalablement selectionnés dans une ListeBox.
 
Ce code commence par comparer les éléments selectionnés dans ma  ListeBox source (File1)  avec ceux d'une autre ListeBox (File2) visant le repertoire destinations de mes photos, puis demande a changer de nom si il y a des doublons, puis fait une copie du fichier si il y n'y a pas de boublons.
 
Le problème est que lorsque je selectionne plusieurs photos  (propriété multi select activé), le test :  If File1.Selected(i) = True  fonctionne mal.
 
En fait lorsque qu'il passe sur le 1er élément sélectionné (disons i=5) tous ce passe bien, il continu le code est fait la copie, mais quand il arrive au 2ème élément selectionné (disons i=8) il ne le vois pas comme sélectionné car il renvoie un False et non un True.
Voila je comprens pas pourquoi puisque cet élément est bien selectionné
 
Je m'arrache les cheveux sur ce code depuis des heures, il va bientôt plus beaucoup m'en rester.  
 
Voila mon code :

Code :
  1. Private Sub cmd_ajout_Click()
  2.     Dim chemin_fichier As String
  3.     Dim i, f As Integer
  4.     Dim new_nom As String   
  5.    
  6.     File2.Refresh
  7.    
  8.     For i = 0 To File1.ListCount - 1
  9.    
  10.         If File1.Selected(i) = True Then   'Test si l'élement i est sélectionné
  11.        
  12.             chemin_fichier = Dir1.Path & "\" & File1.List(i)
  13.             new_nom = File1.List(i)
  14. choix:
  15.             For f = 0 To File2.ListCount - 1
  16.                 If File2.List(f) = new_nom Then  'on test  si ce nom existe deja
  17.                    
  18.                     new_nom = InputBox("Attention le fichier " & "'" & new_nom & "'" & " correspond a une photo déjà présente dans ce thème  !" & vbNewLine & "Veuillez entrer un nouveau nom :", "Choix du nom de la photo" )
  19.                     new_nom = new_nom & ".jpg"
  20.                     GoTo choix    'on repare en choix pour tester si le nouveau nom existe
  21.                 End If
  22.            
  23.             Next f
  24.            
  25.             'on copie le fichier
  26.             FileCopy chemin_fichier, App.Path & "\multimedia\images\" & patient & "\" & theme & "\" & new_nom
  27.             File1.Refresh
  28.            
  29.         End If
  30.        
  31.     Next i   
  32.    
  33. End Sub


 
J'espère que vous aurez une idée pour moi.
 
Merci d'avance.
Olivier

Reply

Marsh Posté le 21-01-2005 à 19:45:59   

Reply

Marsh Posté le 21-01-2005 à 21:04:13    

Ajoute 2 listbox dans ta form. Caches tes filelistbox (visible=false)
dans ton form_load(), copies ceci

Code :
  1. For i = 0 To Me.File1.ListCount - 1
  2. Me.List1.AddItem Me.File1.List(i)
  3. Next i
  4. For i = 0 To Me.File2.ListCount - 1
  5. Me.List2.AddItem Me.File2.List(i)
  6. Next i


Maintenant cela doit fonctionner. N'oublies pas de modifier dans ton prog 'File1' devient 'List1' ...
 
le seul souci qui pourrai exister c'est que ta listbox ne se met pas à jour lorsque tu copies le fichier. Deux cas s'offrent à toi :
• le premier, tu rajoutes (apres la copie de fichier)

Code :
  1. List2.AddItem new_nom


• le second tu rajoutes (même endroit)

Code :
  1. List2.Clear
  2. For i = 0 To Me.File2.ListCount - 1
  3. Me.List2.AddItem Me.File2.List(i)
  4. Next i


Voilà. A toi de voir.


Message édité par knakes le 21-01-2005 à 21:05:06
Reply

Marsh Posté le 21-01-2005 à 22:05:14    

Merci j'ai essayé mais ca ne marche pas non plus.

Reply

Marsh Posté le 21-01-2005 à 22:12:53    

C'est bon j'ai trouvé en fait ca venaot d'une ligne qui na rien a foutre la et qui d'attract le reste :
 
File1.Refresh

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed