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

VB.NET Discussion :

Besoin d'aide sur une boucle For svp [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Par défaut Besoin d'aide sur une boucle For svp
    Bonjour à tous,

    J'ai un petit problème sur une boucle For, du moins j'ai besoin d'un œil extérieur car je n'arrive pas à trouver une solution à mon problème qui paradoxalement je pense est simple...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    			Dim ItemsSTD As New List(Of String)
    				For Each item As SDef In AListbox.SelectedItems
    					ItemsSTD.Add((Item.SPath) + "\" + (Item.SName))
    					Dim FTD As String = (Item.SPath) + "\" + (Item.SName)
    					If System.IO.File.Exists(FTD) = True Then
    						If CInt(Forms.MessageBox.Show("Vous êtes sûr ? ", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)) = Windows.Forms.DialogResult.Yes Then
    							My.Computer.FileSystem.DeleteFile(FTD, Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin, Microsoft.VisualBasic.FileIO.UICancelOption.ThrowException) 'Fichier envoyé à la corbeille 
    							Forms.MessageBox.Show("Fichier(s) supprimé(s)")
    						Else
    							FTD = Nothing 'Ne rien faire
    							Forms.MessageBox.Show("Fichier(s) non supprimé(s)")
    						End If	
    					End If	
    				Next
    La boucle fonctionne très bien sauf qu'évidement si je supprime plusieurs fichiers (items) simultanément alors je reçois le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CInt(Forms.MessageBox.Show("Vous êtes sûr ? ", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)) = Windows.Forms.DialogResult.Yes
    à chaque suppression, ce qui est normal vu qu'il est dans la boucle. Je voudrai en fait que le MessageBox ne s'affiche qu'une seule fois pour tous les fichiers sélectionnés et non pas une fois pour chaque fichiers supprimés (10 suppressions = 10 MessageBox, or je voudrai qu'un seul MessageBox). J'ai essayé de le sortir de la boucle comme ceci et j'ai remplacé FTD par ItemsSTD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    			Dim ItemsSTD As New List(Of String)
    				For Each item As SDef In AListbox.SelectedItems
    					ItemsSTD.Add((Item.SPath) + "\" + (Item.SName))
    					'Dim FTD As String = (Item.SPath) + "\" + (Item.SName)
    				Next
    					If System.IO.File.Exists(itemsSTD) = True Then
    						If CInt(Forms.MessageBox.Show("Vous êtes sûr ? ", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)) = Windows.Forms.DialogResult.Yes Then
    							My.Computer.FileSystem.DeleteFile(ItemsSTD, Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin, Microsoft.VisualBasic.FileIO.UICancelOption.ThrowException) 'Fichier envoyé à la corbeille 
    							Forms.MessageBox.Show("Fichier(s) supprimé(s)")
    						Else
    							ItemsSTD = Nothing 'Ne rien faire
    							Forms.MessageBox.Show("Fichier(s) non supprimé(s)")
    						End If	
    					End If
    Donc avec ma boucle je remplis "ItemsSTD" puis j'utilise FileSystem.DeleteFile pour supprimer et envoyer à la corbeille le/les fichier(s) sélectionné(s)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    My.Computer.FileSystem.DeleteFile(ItemsSTD, Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin, Microsoft.VisualBasic.FileIO.UICancelOption.ThrowException)
    sauf que FileSystem.DeleteFile ne fonctionne qu'avec des strings et non des listes de strings... donc ne fonctionne pas...
    Si quelqu'un peut m'aider svp je lui en serai grandement reconnaissant !

    (Sinon je peux utiliser FileSystem.DeleteFile de cette manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    My.Computer.FileSystem.DeleteFile(ItemsSTD, Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin, Microsoft.VisualBasic.FileIO.UICancelOption.ThrowException)
    et dans ce cas je n'ai pas besoin d'utiliser de MessageBox pour demander si oui ou non on veut supprimer le fichier, j'ai donc une fenêtre windows qui s'ouvre me le demandant directement.)

  2. #2
    Membre émérite Avatar de Momoth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 318
    Par défaut
    Salut,

    Je suis pas sur d'avoir tout compris, mais la solution à ton problème ne serai pas de boucler sur ItemsSTD à la ligne 8 pour les supprimer un par un ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Par défaut
    En fait ce que je voudrai c'est que le MessageBox ne s'affiche qu'une seule fois pour tous les fichiers sélectionnés et non pas une fois pour chaque fichiers supprimés, car par exemple 10 suppressions de fichiers = 10 MessageBox, or je voudrai qu'un seul MessageBox...

    Je ne sais pas si c'est plus clair ?

  4. #4
    Membre émérite Avatar de Momoth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 318
    Par défaut
    Oui du coup, ma solution devrai fonctionner en gros ca donnerai un truc comme ca:

    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
    Dim ItemsSTD As New List(Of String)
    				For Each item As SDef In AListbox.SelectedItems
    					ItemsSTD.Add((Item.SPath) + "\" + (Item.SName))
    					'Dim FTD As String = (Item.SPath) + "\" + (Item.SName)
    				Next
    					If System.IO.File.Exists(itemsSTD) = True Then
    						If CInt(Forms.MessageBox.Show("Vous êtes sûr ? ", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)) = Windows.Forms.DialogResult.Yes Then
                                                          For each itemToDelete As String In ItemsSTD
    							      My.Computer.FileSystem.DeleteFile(itemToDelete , Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin, 
                                                                  Microsoft.VisualBasic.FileIO.UICancelOption.ThrowException) 'Fichier envoyé à la corbeille 
                                                          Next
    							Forms.MessageBox.Show("Fichier(s) supprimé(s)")
    						Else
    							ItemsSTD = Nothing 'Ne rien faire
    							Forms.MessageBox.Show("Fichier(s) non supprimé(s)")
    						End If	
    					End If

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Par défaut
    Avec un peu de retard, Merci @Momoth ! C'était l'idée que j'avais, imbriquer une boucle For dans une autre. Donc oui t'as méthode fonctionne parfaitement !

    En revanche j'ai une question, voici mon code à présent :

    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
                                    Dim ItemsSTD As New List(Of String)
    				For Each item As SDef In AListbox.SelectedItems
    				     ItemsSTD.Add((Item.SPath) + "\" + (Item.SName))
    				Next
    					'If System.IO.File.Exists(itemsSTD) = True Then 'Ne fonctionne pas car itemsSTD est un List of string et non pas un string...
    						'If CInt(Forms.MessageBox.Show("Vous êtes sûr ? ", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)) = Windows.Forms.DialogResult.Yes Then
                                    For Each ItemToDelete As String In ItemsSTD
    	                            My.Computer.FileSystem.DeleteFile(ItemToDelete, Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing) 'Fichier envoyé à la corbeille 
                                    Next
    							'Forms.MessageBox.Show("Fichier(s) supprimé(s)")
    						'Else
    							'ItemsSTD = Nothing 'Ne rien faire
    							'Forms.MessageBox.Show("Fichier(s) non supprimé(s)")
    						'End If	
    					'End If
    Donc ici en utilisant Microsoft.VisualBasic.FileIO.UIOption.AllDialogs au lieu de Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs j'ai une fenêtre windows qui ressemble à ça :

    Nom : supp_fichier.PNG
Affichages : 123
Taille : 28,3 Ko

    Je n'ai donc plus besoin d'en créer une comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms.MessageBox.Show("Vous êtes sûr ? ", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
    Donc mon code est plus court et ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                                    Dim ItemsSTD As New List(Of String)
    				For Each item As SDef In AListbox.SelectedItems
    				      ItemsSTD.Add((Item.SPath) + "\" + (Item.SName))
    				Next
                                    For Each itemToDelete As String In ItemsSTD
    	                             My.Computer.FileSystem.DeleteFile(itemToDelete , Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin, 
                                                                  Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing) 'Fichier envoyé à la corbeille 
                                    Next
    Sauf qu'ici je retombe dans le même problème que précédemment, mon message se répète... car évidement il est dans la boucle.
    Donc je ne vois comment faire maintenant ?
    Quelqu'un pourrait il m'aiguiller ou m'aider svp ?

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

Discussions similaires

  1. [XL-2010] Besoin d'aide sur une boucle VBA
    Par Swam.logx3 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/06/2018, 16h53
  2. Besoin d'aide sur une boucle "do..while"
    Par Mattness69 dans le forum Langage
    Réponses: 3
    Dernier message: 25/06/2016, 16h57
  3. [XL-2013] Besoin d'aide sur une boucle en vba dans excel
    Par ppfun dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/04/2014, 20h25
  4. Besoin d'aide sur une requête SVP
    Par d490619 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 07/06/2012, 17h19
  5. Aide sur une boucle for
    Par Kemanke dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 11/12/2008, 14h13

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