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 :

Analyse du presse papier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 40
    Par défaut Analyse du presse papier
    Bonjour le forum,

    J'aimerai avoir votre aide concernant un petit problème que je rencontre.

    J'utilise ce code ci :
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    Private Sub OK_Click()
     
     
    '===============================================================================================
    '================================ Déclaration des variables ====================================
    '===============================================================================================
     
    'Login
    Dim Utilisateur As String
    Dim MotDePasse As String
     
    Utilisateur = User.Text
    MotDePasse = Mdp.Text
     
    'Paramétrage du presse papier
    Dim MyData As DataObject
    Set MyData = New DataObject
    Dim N_Article As String
     
    'Incrémentation de la nomenclature excel
    Dim i As Integer
     
    '===============================================================================================
    '================================ Authentification TN52/JDE ====================================
    '===============================================================================================
     
            If Utilisateur = "user" And MotDePasse = "password" Then
     
                Unload Me 'Fermeture de la fenêtre login (UserForm1)
     
                Shell ("Y:\base\Fichiers Macro\TN5250J.bat") 'Lancement de TN5250j
                Application.Wait (Now + TimeValue("0:00:06")) 'Temps de pause 6s
     
                UsrCMD = "" & User & "{TAB}" 'Rappel de la saisie User
                SendKeys UsrCMD 'Importer la saisie dans JDE
                Application.Wait (Now + TimeValue("0:00:02")) 'Temps de pause 2s
     
                PassCMD = "" & Mdp & "{ENTER}" 'Rappel de la saisie Password
                SendKeys PassCMD 'Importer la saisie dans JDE
                Application.Wait (Now + TimeValue("0:00:02")) 'Temps de pause 2s
     
            Else
                Exit Sub
            End If
     
    '===============================================================================================
    '================================ Interrogation articles =======================================
    '===============================================================================================
     
                Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 02s
                SendKeys ("1"), True 'Article
                Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
                SendKeys "{ENTER}", True
                Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
                SendKeys ("2"), True 'Fiche article
                Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
                SendKeys "{ENTER}", True
                Application.Wait (Now + TimeValue("0:00:03")) 'Temps de pause 01s
                SendKeys "i", True 'Interrogation
     
        'Séléction des cellules en boucle
     
                    i = 1
     
                Do While Cells(i, 3) <> ""
     
        If Cells(i, 3) > 30999999 And Cells(i, 3) < 32000000 Then
                    Cells(i, 3).Copy 'Copie la cellule d'excel dans le presse papier
                   SendKeys "^v", True 'Colle la cellule dans le champ code produit de JDE
                   Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
                   SendKeys "{ENTER}", True
                    Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
                   SendKeys "^!", True 'Selection du champ n° article (8 caractères)
                   SendKeys "^c", True 'Copie du champ numéro article de JDE
     
        'Vérification du contenu du presse papier
                   On Error GoTo NotText
                    MyData.GetFromClipboard 'Recherche du presse papier.
                   N_Article = MyData.GetText(1)
     
                If N_Article <> "I" Then
                    Cells(i, 2).Value = "1" 'Presse papier vide = article à créer
               Else
                    Cells(i, 2).Value = "" 'Presse papier non vide = article déjà créé
                   SendKeys "+{TAB}", True 'Remise en position sur le premier caractère code d'action
                   Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
                   SendKeys "+{TAB}", True 'Mise en position N° Article
                   SendKeys "^s", True 'Suppression N°Article
                   SendKeys "{TAB}", True 'Remise en position code d'action
                   SendKeys "i", True
                End If
     
    NotText:
                If Err <> 0 Then 'Permet l'arrêt de la boucle sans erreurs
                   MsgBox "La sélection n'est pas du texte."
                End If
     
        End If
    i = i + 1
        Loop
     
     
    End Sub
    Ce code me permet d'ouvrir une application java via excel et d'en analyser ce qu'elle contient.

    Grâce a ce 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     'Vérification du contenu du presse papier
                   On Error GoTo NotText
                    MyData.GetFromClipboard 'Recherche du presse papier.
                   N_Article = MyData.GetText(1)
     
                If N_Article <> "I" Then
                    Cells(i, 2).Value = "1" 'Presse papier vide = article à créer
               Else
                    Cells(i, 2).Value = "" 'Presse papier non vide = article déjà créé
                   SendKeys "+{TAB}", True 'Remise en position sur le premier caractère code d'action
                   Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
                   SendKeys "+{TAB}", True 'Mise en position N° Article
                   SendKeys "^s", True 'Suppression N°Article
                   SendKeys "{TAB}", True 'Remise en position code d'action
                   SendKeys "i", True
                End If
     
    NotText:
                If Err <> 0 Then 'Permet l'arrêt de la boucle sans erreurs
                   Cells(i, 2).Value = "1"
                Else
                    Cells(i, 2).Value = "" 'Presse papier non vide = article déjà créé
                   SendKeys "+{TAB}", True 'Remise en position sur le premier caractère code d'action
                   Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
                   SendKeys "+{TAB}", True 'Mise en position N° Article
                   SendKeys "^s", True 'Suppression N°Article
                   SendKeys "{TAB}", True 'Remise en position code d'action
                   SendKeys "i", True
                End If
    J'analyse le presse papier. Dans le cas ci-dessus, je dis que, si le presse papier est vide alors il faut ecrire un "1" dans la cellule d'excel. Si le presse papier contient quelque chose alors il faut passer directement a la cellule suivante.
    J'aimerai donc pousser le vis un peu plus loin en disant : Si le presse papier contient un "I" alors on passe a la cellule suivante directement, Si le presse papier ne contient pas de "I" alors il faut metre un "1"

    J'ai essayé de remplacer le If N_Article <> "" Then par If N_Article <> "I" Then mais ca ne fonctionne pas.

    Je ne trouve pas le moyen de faire ceci .

    Merci d'avance !

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Tu utilises le caractère "i" dans le sendkeys pour charger le presse papier, mais ensuite tu test le caractère "I".
    Pour VBA ce sont 2 caractères différents.
    Pour éviter ces désagréments, force la majuscule (ou la minuscule)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Ucase(N_Article) <> "I"

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 40
    Par défaut
    J'ai essayé ce que tu m'as dis Jfontaine,

    J'ai donc ce code ci :
    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
     
        'Séléction des cellules en boucle
     
                    i = 1
     
                Do While Cells(i, 3) <> ""
     
        If Cells(i, 3) > 30999999 And Cells(i, 3) < 32000000 Then
                    Cells(i, 3).Copy 'Copie la cellule d'excel dans le presse papier
                   SendKeys "^v", True 'Colle la cellule dans le champ code produit de JDE
                   Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
                   SendKeys "{ENTER}", True
                    Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
                   SendKeys "^!", True 'Selection de la lettre code d'action
                   Application.Wait (Now + TimeValue("0:00:01"))
                   SendKeys "+{TAB}", True 'Remise en position sur code d'action
                   Application.Wait (Now + TimeValue("0:00:01"))
                   SendKeys "^c", True 'Copie de la lettre code d'action
                   Application.Wait (Now + TimeValue("0:00:01"))
     
     
        'Vérification du contenu du presse papier
                   On Error GoTo NotText
                    MyData.GetFromClipboard 'Recherche du presse papier.
                   C_Action = MyData.GetText(1)
     
                If UCase(C_Action) = "I" Then
                    Cells(i, 2).Value = "" 'Si code d'action = I alors article déjà créé
                    SendKeys "^s", True 'Suppression code article
                    Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
                    SendKeys "+{TAB}", True 'Aller au champ Numéro article
                    Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
                    SendKeys "^s", True 'Suppression N°Article
                    Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
                    SendKeys "{TAB}", True 'Remise en position code d'action
                    Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
                    SendKeys "I", True
     
                Else
                    Cells(i, 2).Value = "1"
                End If
     
    NotText:
                If Err <> 0 Then 'Permet l'arrêt de la boucle sans erreurs
                   MsgBox "La sélection n'est pas du texte."
                End If
        End If
     
        i = i + 1
        Loop
    J'ai rajouté un MsgBox (juste avant le " 'Vérification du contenu du presse papier ") pour voir la saisie qu'il copiait. A la première copie il ne copie rien, ce qui est bizarre. Ensuite pour les autres c'est bien un I qui est trouvé mais j'ai l'impression qu'il zappe ma condition If Ucase(N_article) = "I".

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, même si le code sur http://www.developpez.net/forums/d11...ormat-jpg-bmp/ est donné pour l'enregistrement du presse papier cela pourrait t'intéresser ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 40
    Par défaut
    Salut Kiki29 !
    Au premier abord ca a l'air d'être le même fonctionnement en effet et je pense en être relativement proche bien que je m'arrête seulement sur le presse papier car je n'ai pas besoin de coller d'image mais seulement un caractère. Crois tu que je suis obligé de tout paramétrer comme toi tu l'a fais ?

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    A la première copie il ne copie rien, ce qui est bizarre. Ensuite pour les autres c'est bien un I qui est trouvé mais j'ai l'impression qu'il zappe ma condition If Ucase(N_article) = "I".
    Lance ton code en Pas à pas et regarde si son défilement correspond à ce que tu souhaites

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

Discussions similaires

  1. [VBA] Vider le presse papier
    Par Kelyane dans le forum VBA Access
    Réponses: 7
    Dernier message: 07/10/2003, 13h05
  2. Comment copier une image dans le presse papier.
    Par cprogil dans le forum Langage
    Réponses: 7
    Dernier message: 09/09/2003, 16h54
  3. [VBA-E] Vider le presse-papier
    Par tinej dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/12/2002, 10h33
  4. [Système] Vider le Presse Papier
    Par babe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/09/2002, 18h46
  5. Copier une image (jpeg) dans le presse papier
    Par benj63 dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/07/2002, 15h51

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