Instrrev fonctionne pas [Résolu]

Messages postés
39
Date d'inscription
mardi 26 novembre 2013
Dernière intervention
29 mars 2018
-
Bonjour, j'ai fait une macro qui fonctionne en VBA mais pas dans Visual Basic 2010. Ça bloque sur l'Instruction "instrrev". Je suis débutant en VB donc je ne comprend pas pourquoi ça ne fonctionne pas.

voici mon code:

Public Class Form1

    Private Sub LinkLabel1_LinkClicked(sender As System.Object, e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked

        MsgBox("XXXXXXXXXXXX!", MsgBoxStyle.Exclamation)

    End Sub
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click



        TousLesDossiers("C:\Users\XXXXX\Documents\test", 0)

    End Sub
    Sub TousLesDossiers(LeDossier$, Idx As Long)
        Dim fso As Object, Dossier As Object
        Dim sousRep As Object, Flder As Object
        Dim Chemin As String
        Dim Fichier As String
        Dim Extention As String
        Dim f2 As Object
        Dim Ret

        fso = CreateObject("Scripting.FileSystemObject")
        Dossier = fso.GetFolder(LeDossier)

        'examen du dossier courant
        For Each Flder In Dossier.SubFolders
            'compte le nbre de dossier
            Idx = Idx + 1
            Chemin = Flder.Path & ""
        Next

        'donne l'extention du fichier


        'traitement récursif des sous dossiers
        For Each sousRep In Dossier.SubFolders
            For Each f2 In sousRep.Files
                Extention = Mid(f2, InStrRev(f2, ".") + 1)
                If Extention = "pdf" Then
                    'récupère le onm du fichier seulement
                    Fichier = f2.Name
                    Extention = Mid(Fichier, InStrRev(Fichier, ".") + 1)
                    Ret = Shell("C:\Program Files (x86)\adobe\reader 11.0\reader\acrord32.exe " & Chemin & Fichier, 1)
                Else
                End If
            Next f2

            TousLesDossiers(sousRep.Path, Idx)
        Next sousRep


        fso = Nothing



    End Sub

End Class



si quelqu'un peut m'aider et m'expliquer ce qui fait que ça ne fonctionne pas, je serait très content.

Si vous voulez des informations supplémentaire, n'hésitez pas à me les demandés.

merci pour votre aide.
Afficher la suite 

Votre réponse

4 réponses

Messages postés
12421
Date d'inscription
mardi 11 mars 2003
Dernière intervention
18 décembre 2018
0
Merci
Bonjour, message modifié par l'ajout des balises de code.
Voir ici comment bien utiliser la coloration syntaxique.
Commenter la réponse de Whismeril
Messages postés
12421
Date d'inscription
mardi 11 mars 2003
Dernière intervention
18 décembre 2018
0
Merci
Ce qui fait que ça ne fonctionne pas est simplement que VB.net est un langage différent de VBA ou VB6.
La démarche globale, la façon de déclarer les fonctions, le langage peu typé(quoi que) sont restés, mais les instructions sont celles de la framework.
Je te conseille de regarder du côté de l'objet string et sa méthode index of
http://msdn.microsoft.com/fr-fr/library/System.String(v=vs.100).aspx
Commenter la réponse de Whismeril
Messages postés
14325
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 décembre 2018
0
Merci
En .NET, il est largement possible d'éviter FSO !!!
Déjà retires l'import automatique des l'espace de nom "Microsoft.VisualBasic" (propriétés du projet, onglet "Références")
Penses à activer "Option Explicit" et "Option Strict"

Pour les fichier/dossier, l'espace de nom System.IO est là :
System.IO.Directory.* pour les dossiers
System.IO.File.* pour les fichiers
System.IO.Path.* pour le traitement des noms de fichier/dossier.

Extention = Mid(f2, InStrRev(f2, ".") + 1)
Devient
System.IO.Path.GetExtension(f2)
Ou au pire :
Extention = f2.SubString(f2.LastIndexOf(".") + 1)


Shell("C:\Program Files (x86)\adobe\reader 11.0\reader\acrord32.exe " & Chemin & Fichier, 1)
Shell est à remplacer par :
System.Diagnostics.Process.Start

De plus, que se passe-t-il si il n'y a pas Acrobat Reader sur la machine, mais un autre lecteur ?
System.Diagnostics.Process.Start permet d'éviter cet écueil en ne mettant que le nom du PDF.

J'oubliais, pour la concaténation de chemin/nom de fichier : System.IO.Path.Combine est là.

If a Dalek is a being of pure hate...what happens when Cadence uses her love spell on one?
En VB.NET pensez à activer "Option Explicit" et "Option Strict"
Whismeril
Messages postés
12421
Date d'inscription
mardi 11 mars 2003
Dernière intervention
18 décembre 2018
-
Et c'est là ou on voit le spéciliste en VB.Net à comparer du rigolo qui ne lit même pas le code et fais une réponse de base à la question de base posée....
Commenter la réponse de NHenry
0
Merci
Bonjour, merci pour ces informations très rapide d'ailleurs. Je vais regarder cela avec attention. Merci Nhenry pour tes explications. Je comprend bien maintenant pourquoi ça ne fonctionne pas.

Bon journée à tous.
Commenter la réponse de infodes

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.