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 :

Vérifier les fiches de données de sécurité des produits dangereux


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2020
    Messages : 6
    Par défaut Vérifier les fiches de données de sécurité des produits dangereux
    Bonjour à tous,

    Je me permet de vous demandez de l'aide, mon entreprise me demande de crée un fichier excel sous lequel on puisse réaliser la vérification des fiches de données e sécurité des produits chimique des fournisseurs.
    Pour cela je me suis penché pour faire un code en VBA afin de dire au code dans un premier temps de convertir le PDF envoyé par le fournisseur sur une feuille excel puis sortir les chapitres 1,2,3,5,6.
    J'ai commencé par regarde ce qui se fait sur le net, je suis tombé sur le code de KIKI29 pour la transformation du PDF en excel mais celui-ci ne fonctionne pas et me met comme erreur que rien n'est attribué sur la ligne ShTEST.cells.clear donc du coups je me retrouve pour mon premier pas bloqué.
    Pour infos, j'utilise Excel 2016.
    Pourriez-vous m'aider SVP.
    Merci par avance de vos idées et votre aide.

    Cdt.
    Julien.

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour et bienvenue au forum

    Pour pouvoir t'aider il faut que tu sois plus explicite sur ta question => donne nous le code que tu as écrit (entre balises codes = le bouton # dans la barre de menu quand tu écris le message).
    Dis-nous aussi comment est structuré ton classeur. Aide-toi de copies d'écrans pour cela.
    Attention pas de fichiers joints => https://www.developpez.net/forums/d8...s-discussions/

    L'erreur dépend très souvent du contexte du code. On ne peut pas te répondre en l'état.
    A très vite

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par jule-boss Voir le message
    convertir le PDF envoyé par le fournisseur sur une feuille excel
    Est-ce que tu parviens à extraire "à la main" les données du PDF vers Excel (histoire de vérifier que ton PDF n'est pas un scan) ?

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2020
    Messages : 6
    Par défaut suite
    Bonjour,

    Merci pour vos retours.
    Alors ci-joint la programmation que j'ai mis :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    Sub SelectionFichier2()
    Dim FD As FileDialog
     
        Set FD = Application.FileDialog(msoFileDialogFilePicker)
        With FD
            .InitialFileName = ThisWorkbook.Path
            .AllowMultiSelect = False
            .Filters.Clear
            .Filters.Add "PDF", "*.pdf", 1
            .ButtonName = "Ouvrir fichier"
            .Title = "Sélectionner un fichier PDF"
        End With
     
        If FD.Show = True Then Lire2 FD.SelectedItems(1)
     
        Set FD = Nothing
     
    End Sub
     
    '   Cocher Reference : Microsoft Forms 2.0 Object Library
    Sub Lire2(sFichier As String)
    Dim PDDoc As Object
    Dim PDPage As Object
    Dim PDText As Object
    Dim TextSelt As Object
    Dim Rep As Long
    Dim i As Long, j As Long
    Dim wkPage As Long
    Dim wkCnt As Long
    Dim wkText As String
    Dim FName As String
    Dim oDO As Object
     
        FName = sFichier
        Set PDDoc = CreateObject("AcroExch.PDDoc")
        Rep = PDDoc.Open(FName)
     
        Set TextSelt = CreateObject("AcroExCh.HiliteList")
        TextSelt.Add 0, 32767
     
        wkPage = PDDoc.GetNumPages()
        For i = 0 To wkPage - 1
            Set PDPage = PDDoc.AcquirePage(i)
            Set PDText = PDPage.CreatePageHilite(TextSelt)
            wkCnt = PDText.GetNumText()
            For j = 0 To wkCnt - 1
                wkText = wkText & PDText.GetText(j)
            Next j
        Next i
        PDDoc.Close
     
        Set PDPage = Nothing
        Set PDText = Nothing
     
        Set oDO = New MSForms.DataObject
        oDO.Clear
        oDO.SetText wkText
        oDO.PutInClipboard
     
        Application.ScreenUpdating = False
        shTest.Cells.Clear                                                          =>C'est à cette étape que sa bug
        shTest.Range("A1").PasteSpecial
     
        Set oDO = Nothing
        Set TextSelt = Nothing
        Set PDDoc = Nothing
     
        shTest.Range("H1").Select
        Application.ScreenUpdating = True
    End Sub

    Pour répondre à la deuxième question : oui je peux copier les éléments du PDF lorsque je prend la flèche.

    Merci.

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    La variable shTest n'est ni déclarée, ni renseignée.
    Cette ligne essaye donc d'effacer les cellules d'une feuille qui n'existe pas.

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Tu ne détermines pas à quoi correspond l'objet shTest. Excel ne sait pas sur quoi tu l'appliques. Quand tu écris :
    sans avoir déterminé ce qu'est shTest, c'est comme si tu disais à Excel : "efface les cellules du truc". Sauf qu'Excel ne sait pas ce qu'est "truc".

    Prenons un exemple : tu veux effacer toutes les cellules d'une feuille nommée "Feuille Test" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub effacerDonnes()
          Dim shTest As Worksheet
          Set shTest = WorkSheets("Feuille Test")
          shTest.Cells.Clear
    End Sub

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2020
    Messages : 6
    Par défaut
    Ci-dessous mon tableau que je dois remplir en réalisant l'extraction de la fiche de données de sécurité :
    Nom : Annotation 2020-04-23 094513.jpg
Affichages : 322
Taille : 139,2 Ko

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2020
    Messages : 6
    Par défaut
    OK, donc si je comprend bien, la formule sert à effacer des données et non à importer des données.

    Je peux par principe la retirer tout simplement?

  9. #9
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par jule-boss Voir le message
    OK, donc si je comprend bien, la formule sert à effacer des données et non à importer des données.
    Cette ligne supprime le contenu de toutes les cellules de la feuille référencée par la variable shTest.

    En pratique, l'idée du développeur était sans doute de supprimer les données de l'extraction précédente avant de lancer la nouvelle extraction, ce que, personnellement, je trouve très judicieux.

    Ta proposition d'importer les données dans un tableau déjà structuré me semble beaucoup plus difficilement réalisable sans passer par une feuille intermédiaire.

    Je peux par principe la retirer tout simplement?
    Si la durite du moteur de ta voiture est percée, penses-tu que le moteur fonctionnera mieux si tu la retires ?

    Supprimer cette ligne ne règlera pas le problème puisque cette variable est ensuite utiliser plusieurs fois dans le reste du code.

Discussions similaires

  1. DevOps est-il un échec ? Un ingénieur logiciel de Pulumi pense que c'est le cas et propose de passer à SoftOps
    Par Bill Fassinou dans le forum Débats sur le développement - Le Best Of
    Réponses: 15
    Dernier message: 14/07/2022, 10h56
  2. Réponses: 15
    Dernier message: 03/11/2015, 13h16
  3. Virtualiser les serveurs, est-ce un risque pour la sécurité des données ?
    Par Jean-Philippe Dubé dans le forum Actualités
    Réponses: 3
    Dernier message: 03/06/2009, 15h00
  4. Réponses: 3
    Dernier message: 27/12/2008, 19h18

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