Ajout d'une contrainte dans un programme [Résolu]

Signaler
Messages postés
10
Date d'inscription
vendredi 31 janvier 2020
Statut
Membre
Dernière intervention
24 février 2020
-
Messages postés
10
Date d'inscription
vendredi 31 janvier 2020
Statut
Membre
Dernière intervention
24 février 2020
-
Bonjour à tous,

Voila, j'ai une macro VBA à faire portant sur une modification (plutot suppression dans mon cas ) d'une même donnée sur plusieurs lignes issus du fichier text ( via Excel) .
sur mon "tex"t, il y a 200 lignes et sur mon programme , j'ai programmé qu'il doit toujours supprimer la 1er donnée (qui est censé etre "AED" ) MAIS je veux lui mettre une contrainte que si cela n'est pas AED, qu'il ne doit pas la supprimer. apres libre au systeme soit de continuer à la prochaine ligne ou bien qu'il s'arrete

Voici ma macro : "nu_doss_titre" est le fichier text ou vba va chercher les lignes et "transmitANsi "d" la manette de suppression
je veux que la contrainte soit entre TABKEY et "transmitANSI"d" afin qu'il sache que si la donnée n'est pas AED, quil ne supprime pas et quil passe à la suivante..

Sub SUP1deviseAED()
'
' Generated by the Reflection Macro Recorder on 12-09-2019  17:58:23.03
' Generated by Reflection for IBM for Windows 14.0.288
'
Dim nu_doss_titre As String
'
Open "U:\dddd.txt" For Input As #1
Do While Not EOF(1)
Input #1, nu_doss_titre
    With Session
        .WaitForEvent rcEnterPos, "30", "0", 5, 53
        .TransmitANSI nu_doss_titre
        .TransmitTerminalKey rcIBMEnterKey
        .WaitForEvent rcKbdEnabled, "30", "0", 1, 1
        .WaitForEvent rcEnterPos, "30", "0", 5, 41
        .TransmitTerminalKey rcIBMTabKey
        .TransmitTerminalKey rcIBMTabKey
        .TransmitTerminalKey rcIBMTabKey
        .TransmitANSI "d"
        .TransmitTerminalKey rcIBMEnterKey
        .WaitForEvent rcKbdEnabled, "30", "0", 1, 1
        .WaitForEvent rcEnterPos, "30", "0", 5, 41
        .TransmitTerminalKey rcIBMPf14Key


Je ne sais pas si cela est clair mais a dispo si besoin

Cdlmt
Sufyan

3 réponses

Messages postés
11504
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 juillet 2020
659
bonjour, tu n'expliques pas où se trouve AED sur la ligne.
Messages postés
11504
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 juillet 2020
659
je suggère d'essayer ceci, en remplaçant les points d'interrogation en ligne 15 par les numéros de ligne et de colonne où se trouve le champ qui devrait contenir AED. ceci va juste afficher les trois premiers caractères de ce champ, pour vérifier si on les a bien trouvé. si cela marche, il faudra ensuite adapter la logique de la macro pour tester la devise.
Dim nu_doss_titre As String, devise as String
'
Open "U:\dddd.txt" For Input As #1
Do While Not EOF(1)
Input #1, nu_doss_titre
With Session
.WaitForEvent rcEnterPos, "30", "0", 5, 53
.TransmitANSI nu_doss_titre
.TransmitTerminalKey rcIBMEnterKey
.WaitForEvent rcKbdEnabled, "30", "0", 1, 1
.WaitForEvent rcEnterPos, "30", "0", 5, 41
.TransmitTerminalKey rcIBMTabKey
.TransmitTerminalKey rcIBMTabKey
.TransmitTerminalKey rcIBMTabKey
devis = .GetFieldText(?,?,3)
MsgBox devise ,,"est-ce AED?"
.TransmitANSI "d"
.TransmitTerminalKey rcIBMEnterKey
.WaitForEvent rcKbdEnabled, "30", "0", 1, 1
.WaitForEvent rcEnterPos, "30", "0", 5, 41
.TransmitTerminalKey rcIBMPf14Key
Messages postés
10
Date d'inscription
vendredi 31 janvier 2020
Statut
Membre
Dernière intervention
24 février 2020

au fait AED est deja dans la programmation, le "transmit ansi "d" " est la ligne ou se situe l AED et le "d" est la donnée fixe pour lui dire de supprimer, donc mon soucy est de lui dire si ce n'est pas AED (par exemple) EUR ou USD, il ne doit pas le supprimer

merci de ton retour !
Messages postés
11504
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 juillet 2020
659 >
Messages postés
10
Date d'inscription
vendredi 31 janvier 2020
Statut
Membre
Dernière intervention
24 février 2020

as-tu testé ma suggestion?
Messages postés
10
Date d'inscription
vendredi 31 janvier 2020
Statut
Membre
Dernière intervention
24 février 2020
>
Messages postés
11504
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 juillet 2020

Hello

Désolé du retour tardive, oui grand merci, cela marche mais juste que j'ai enlevé la boite msg car elle validait quand meme apres le OK et jai rajouté un "then" pour lui dire si elle quitte ou non le process si c'est la devise AED ou non..

merci en tout cas !!
Messages postés
11504
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 juillet 2020
659 >
Messages postés
10
Date d'inscription
vendredi 31 janvier 2020
Statut
Membre
Dernière intervention
24 février 2020

parfait! peux-tu alors marquer la discussion comme résolue?
Messages postés
10
Date d'inscription
vendredi 31 janvier 2020
Statut
Membre
Dernière intervention
24 février 2020

Merci a toi !