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 :

Drag and drop


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 110
    Par défaut Drag and drop
    Bonjour

    j'ai essaye de faire un glissé / déposé

    Objectif: récupérer le chemin complet d'un ficher pour un traitement ultérieur

    aujourd'hui je me sers d'une listview,
    cela fonction bien depuis l'exploreur Windows
    mais pour Outlook, rien de va plus
    j' ai un message d'erreur

    Nom : CapScre_01.jpg
Affichages : 977
Taille : 20,3 Ko

    je désirais réaliser un glisser / déposer
    A partir d'une pièce joint dans mon email et glisser / déposer un email entier

    Voici ce que j'ai fait aujourd'hui comme code

    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
     
    Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
        Dim Long_Chaine As Long
        Dim PosCar_1 As Long     'Defini la position du dernier "\"
        Dim NomFile As String
        StrPath = Data.Files(1)
        Long_Chaine = Len(StrPath)
        For PosCar_1 = (Long_Chaine) To 1 Step -1
            If Mid(StrPath, PosCar_1, 1) = "\" Then GoTo Suite
        Next
    Suite:
        NomFile = Right(StrPath, (Long_Chaine - PosCar_1))
        With ListView1  
            .ListItems.Add , , NomFile
            .ListItems(.ListItems.Count).ListSubItems.Add , , StrPath
            .Refresh
        End With
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    As-tu au moins regardé en mode debug la valeur de NomFile lorsque erreur ?
    Fais-le et indique-la nous, s'il te plait

    Par ailleurs :
    Regarde s'il te plait dans ton aide VBA ce que retourne la fonction InstrRev.
    Son utilisation devrait te permettre d'éviter, à la fois :
    et ta boucle for to next et cette vilaine méthode Goto.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 110
    Par défaut
    Bonsoir unparia
    Je t'avoue je n'ai pas regardé la valeur en mode debug de NomFile
    je le fais demain matin en arrivant au bureau
    Par contre j'ai regardé la fonction InstrRev, j'ai modifier le code tu me diras ce que tu en penses

    En attendant merci de tes conseils

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
        Dim PosCar_1 As Long     'Defini la position du premier "\" dans le mode InstrRev
        Dim NomFile As String
        StrPath = Data.Files(1)
        PosCar_1 = InStrRev(StrPath, "\", , vbTextCompare) + 1
        NomFile = Mid(Chaine, PosCar_1, Len(StrPath))
        With ListView1
            .ListItems.Add , , NomFile
            .ListItems(.ListItems.Count).ListSubItems.Add , , StrPath
            .Refresh
        End With
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    L'extraction de Nomfile dans la chaine traitée ira sans doute beaucoup mieux si, dans cette ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomFile = Mid(Chaine, PosCar_1, Len(StrPath))
    tu remplaces Chaine, par la chaine traitée, à savoir StrPath, non ?

    Je saisis cette occasion pour te rappeler que l'utilisation de la fonction Mid, sans le second argument (de longueur) signifie : tout à partir de la position poscar_1 et donc --->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomFile = Mid(StrPath, PosCar_1)
    suffit parfaitement

    Pour le reste : je vais attendre que tu vérifies Nomfile en mode debug si erreur.

    EDIT : Et on traitera la listview de toutes manières, mais, après l'avoir traitée (juste pour que tout soit clair) : j'emploierai toute mon énergie pour te dissuader d'utiliser ce contrôle activex qui n'est pas un composant natif de VBA/Excel et t'inviter à utiliser de préférence le contrôle Listbox qui, lui, est natif de VBA/Excel.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 110
    Par défaut
    Bonjour,

    J'ai effectué les modifications du code
    j'ai fait le test en debug

    a partir d'un fichier dans l'exploreur ca fonctionne bien
    le data.files contient le nom du fichier le chemin absolus

    l'erreur surviens a partir de la ligne ( Quand je drop depuis un fichier en PJ dans un email

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StrPath = Data.Files(1)

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Mais c'est là totalement autre chose : le contenu même de ta variable Data !
    Et ce contenu, ce n'est pas du tout dans le code montré, qu'il a été défini, mais dans l'évènement OLEStartDrag de ta listview !

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour !

    Citation Envoyé par mlww Voir le message
    mais pour Outlook, rien de va plus
    Et sur le forum Outlook, ils en disent quoi ?! …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 110
    Par défaut
    Bonjour,

    j' ai regardé dans le forum Outlook,
    je n'ai rien trouvé..

    Citation Envoyé par Marc-L Voir le message
    Bonjour !

    Et sur le forum Outlook, ils en disent quoi ?! …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

Discussions similaires

  1. Drag and drop "de l'extérieur"
    Par Invité dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2020, 10h10
  2. "Drag and drop" avec directinput
    Par batosai dans le forum DirectX
    Réponses: 1
    Dernier message: 16/06/2004, 16h48
  3. [VB.NET] Microsoft TreeView drag and drop ?
    Par bigtoof dans le forum ASP.NET
    Réponses: 7
    Dernier message: 24/05/2004, 14h50
  4. [JSP][DRAG AND DROP]
    Par hamed dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 23/01/2004, 17h36
  5. drag and drop
    Par jujuesteban dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/06/2003, 09h23

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