Copier-coller des données d'excel vers un logiciel

zombe

XLDnaute Occasionnel
Salut le forum
Je saisis des informations dans une plage de données de la feuille DONNE (B4 :B49).
Après cela, les données de la plage sont récupérées sur une autre feuille intitulée RECUPERATION.
Les données de la feuille récupération doivent être ressaisi sur le logiciel de la société ;ce qui constitue un « double emploi ».
Les connexions du logiciel avec d’autres logiciels sont interdites.
J’ai trouvée une solution alternative pour éviter la double saisie que je souhaiterai partager avec vous afin de bénéficier de vos aides multiformes sur sa faisabilité.
J’ai vu que l’on peut copier les données à partir d’Excel et de les coller un à un et au fur et à mesure dans le champ actif du logiciel(le logiciel le permet).
C'est-à-dire que je copie P45 et je le colle dans le champ 1 du logiciel, je copie P00 et le colle dans le champ 2, je copie CELIBATAIRE et je le colle dans le champ 3 etc…
Pour cela, il faut que par macro ci-possible, j’arrive à copier les données de la plage D3 50 de la feuille RECUPERATION et de pouvoir les coller suivant l’ordre de la copie dans les champs respectifs du logiciel (C3 :C50).
La grande question est de savoir s’il est possible de copier des données comme les miennes et d’assurer leur collage par ordre respectif comme je le souhaite ?
Ne pouvant pas tout expliquer en un seul coup, je me tiens à votre disposition pour de plus amples éclaircissements.

http://cjoint.com/?BGdawS2Mfuo
 

ERIC S

XLDnaute Barbatruc
Re : Copier-coller des données d'excel vers un logiciel

Bonjour

il est toujours difficiel de répondre à une question pour laquelle on n'a pas toutes les données.
Regarde néanmoins si tu peux déterminer des séquences de touches pour partir d'un champ connu et basculer d'un champ à l'autre sur ton logiciel (ex si touche "fin" détermine le dernier champ et que tab fait basculer d'un champ à l'autre...)

si c'est le cas, penche toi sur "sendkeys" dans l'aide vba, cela permet de simuler un envoi clavier.
 

zombe

XLDnaute Occasionnel
Re : Copier-coller des données d'excel vers un logiciel

Salut ERIC S

Merci pour votre feedback et surtout pour l'intérêt que vous accordez à ma préoccupation.
Voici comment fonctionne (mouvement d'un champ à un autre) notre logiciel :
- pour passer d'un champ à un autre, c'est la touche ENTREE qui est utilisé.
- les sauts de champ ne sont pas autorisés
- on ne peut saisir une information que sur le champ actif c'est à dire la ou se trouve le curseur
- les saisies se font du champ 1 au champ 48 et dans l'ordre (1, 2, 3.....48)
- pour revenir en arrière, on utilise SHIFT+TAB
Suis trop noviste en vba donc les sendkeys je m'y connais pas trop mais je suis prêt à suivre vos recommandations pour venir à bout de mon problème.
Que le tout puissant vous inspire afin vous m'aidez à trouver une solution satisfaisante.
Encore merci et à bientôt
 

ERIC S

XLDnaute Barbatruc
Re : Copier-coller des données d'excel vers un logiciel

Re

cela va peut-être être compliqué si tu connais peu vba et avec une application qu eje ne connais pas.

on essaie des petits tests :

avec word tu ouvres un nouveau document, tu le sauve en l'appelant essai
ouvre excel sans fermer ni réduire la fenêtre "essai"
lancer le fichier excel joint
le bouton simul permet d'écrire tes données en utilisant sendkeys
 

Pièces jointes

  • test copier_collerES.xlsm
    31.8 KB · Affichages: 122

zombe

XLDnaute Occasionnel
Re : Copier-coller des données d'excel vers un logiciel

C'est fantastique ton essai.
Vraiment merci pour cette 1ère étape.
Je pense avoir compris la logique du sendkey.
Je sais que tu voudras comprendre notre logiciel afin de pouvoir m'aider tu peux compter sur moi.
J'attend ton feedback et tes différentes interrogations.
 

ERIC S

XLDnaute Barbatruc
Re : Copier-coller des données d'excel vers un logiciel

Bonjour

si ce principe convient, le premier essai que tu dois faire est de vérifier si tu es capable d'activer la fenêtre de ton logiciel :

tu ouvres ton logiciel
tu notes le nom qui apparait dans le haut de sa fenêtre : "monlogiciel"
tu ouvres un nouveau fichier excel et tu essaies le code sans les lignes d'écriture

Code:
Sub activation()
On Error GoTo gestionerreur
AppActivate "essai"

Exit Sub
gestionerreur:
MsgBox "fichier non ouvert ou réduit dans la barre des tâches : abandon"
End Sub

A ce stade, si le basculement de fenêtre se passe bien, il faut regarder si c'est bien toujours le même champ qui est valide.

Si le basculement ne se fait pas ce ne sera sans doute pas possible d'automatiser la saisie
 

zombe

XLDnaute Occasionnel
Re : Copier-coller des données d'excel vers un logiciel

Bonjour ERIC S

Le basculement se fait bien.
Mais il faut noter que lorsque j’ouvre le logiciel, je dois taper sur la touche ENTREE 3 fois avant d’être sur l’interface de saisie des informations.
Avant d’activer la fenêtre de mon logiciel à par ton code, je m’assure que je suis sur l’interface souhaité de mon logiciel comme cela lorsque j’active la fenêtre, le curseur se positionne toujours sur le même champ.
Je vous ai envoyé un message privé dans lequel il y’a une image de l’interface de saisie de notre logiciel.
J’ai utilisé le fichier comportant le code ci-dessous pour voir s'il allait y avoir saisie automatique comme ca été le cas avec mon fichier word mais rien ne sait produit sauf l'activation de la fenêtre du logiciel.

Code:
Sub e()
'liste des process

    Dim svc As Object
    Dim sQuery As String
    Dim oproc
    Range("G9").Select
    Set svc = GetObject("winmgmts:root\cimv2")
  sQuery = "select * from win32_process"
    For Each oproc In svc.ExecQuery(sQuery)
        ActiveCell.Value = oproc.Name
        ActiveCell.Offset(1, 0).Select
    Next
    Set svc = Nothing

End Sub
Sub activation()
On Error GoTo gestionerreur
AppActivate "BANK OF AFRICA - BURKINA FASO"
For i = 3 To 50
    SendKeys Cells(i, 4).Value
    SendKeys "~"
Next
SendKeys "C'est fini, {TAB}{TAB} ouf!"
Exit Sub
gestionerreur:
MsgBox "fichier non ouvert ou réduit dans la barre des tâches : abandon"
End Sub
Y’a-t-il une autre procédure pour déclencher l’automatisme des saisies ?
Je reste à votre disposition pour les informations complémentaires.
 

ERIC S

XLDnaute Barbatruc
Re : Copier-coller des données d'excel vers un logiciel

Bonjour

on va continuer pas à pas pour voir si les champs de ton logiciel peuvent être remplis automatiquement

le fichier joint n'envoie que "essai", une fois

Donc tu ouvres ton appli et tu te mets sur le champs "NOM" (on est sûr qu'il accepte du texte)
tu ouvres le fichier excel et tu cliques sur le bouton

est-ce que "essai" apparait quelquepart au niveau de ton écran d'appli?

Sinon j'ai peur de n epas avoir de solution.......
 

Pièces jointes

  • test copier_collerES1.xlsm
    29.1 KB · Affichages: 70

zombe

XLDnaute Occasionnel
Re : Copier-coller des données d'excel vers un logiciel

Salut ERIC S

J'ai bien essayé le code que vous venez de m'envoyer.
Après essai, voici mes observations :
- de façon générale, je peux dire que mon logiciel accepte les saisies automatiques mais je rencontre des difficultés :

Je peux cliquer plusieurs fois sur le bouton sans que rien ne se produit mais la fenêtre de mon logiciel s'active.
Aussi, le collage des données vers mon logiciel ne se réalise pas en intégralité : ca colle une partie des informations et ca s'arrête.

- Aussi, il faut noter que le fichier connaîtra un usage régulier: je reçois des clients pour la création de leur compte donc pour chaque client je serai toujours appelé à exécuter la macro pour automatiser la saisie vers mon logiciel.

Est-ce que les disfonctionnements que je rencontre sont dus au faite qu'il y'a répétition dans l'exécution de la macro?
Merci de voir comment vous pourrez m’aider à solutionner mes inquiétudes.
 

ERIC S

XLDnaute Barbatruc
Re : Copier-coller des données d'excel vers un logiciel

Bonsoir

j'étais en déplacement

on peut espérer que ton logiciel ne comprenne pas parce que c'est trop rapide

une manip pour ralentir, à tester

Code:
Sub activation()
On Error GoTo gestionerreur
'AppActivate "BANK OF AFRICA - BURKINA FASO"
AppActivate "document1"
Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 2)
SendKeys "essai", 1
Exit Sub
gestionerreur:
MsgBox "fichier non ouvert ou réduit dans la barre des tâches : abandon"
End Sub
au code précédent on ajoute une temporisation de 2 secondes avec le waitime et on ralentit le sendkeys avec le ,1

Est-ce que cela améliore ?
 

zombe

XLDnaute Occasionnel
Re : Copier-coller des données d'excel vers un logiciel

Salut ERIC S
Bonne arrivée alors.

Observations à l'issue de l'essai avec le nouveau code :

En écrivant le code comme ci-dessous, la saisie automatique se réalise mot par mot.
Code:
Sub activation()
'On Error GoTo gestionerreur
AppActivate "NOM DU LOGICIEL"
Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 4)
For i = 3 To 50
    SendKeys Cells(i, 4).Value
    SendKeys "~"
Next
Exit Sub
gestionerreur:
MsgBox "fichier non ouvert ou réduit dans la barre des tâches : abandon"
End Sub
J’ai constaté quand ajoutant le 1 dans cette partie du
Code:
 (SendKeys "~", 1)
les mots se mélangent dans les champs du logiciel.
C'est-à-dire au lieu d’écrire ELOI par exemple dans le champ 1 et ENFANT dans le champ 2, il peut écrire ELOIENFANT dans le champ 1 donc confusion dans la saisie automatique.

Autres disfonctionnements :
La saisie ne va pas jusqu’au bout. Aussi le dernier mot saisie connait également des coupures.

Point positif :
Contraiement au 1er code ou je rencontrais des problèmes dans l’exécution de la macro, maintenant dès que je click sur le bouton, la macro saisie automatique s’exécute.

A bientôt
 

ERIC S

XLDnaute Barbatruc
Re : Copier-coller des données d'excel vers un logiciel

Bonjour

si la vitesse influe, il faut que tu essaies des variantes.

pour sendkeys j'ai un petit doute entre les les valeurs 0 et 1 de l'option, essaie avec

Code:
SendKeys Cells(i, 4).Value, true
SendKeys "~", true
pour être sûr que l'on attend la fin de traitement avant l'instruction suivante


Sinon, autre piste d'essai
possibilité de mettre un wait dans la boucle, par exemple

Code:
SendKeys Cells(i, 4).Value
Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 1)
 SendKeys "~"
Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 1)
va temporiser d'une seconde après le sendkeys.
 

zombe

XLDnaute Occasionnel
Re : Copier-coller des données d'excel vers un logiciel

Salut ERIC S

Merci encore pour vos nouvelles propositions.
Elle a bien fonctionner une fois et quand j'ai voulu tenter le 2è test, il n'a pas donné;il n'a fait qu'activer la fenêtre de mon logiciel.
J'ai eu une autre piste qui m'a permis de combiner avec ton code et le résultat est satisfaisan(voire code ci-dessous).
Le seul constat que j'ai pu faire avec le code ci-dessous qui fonctionne bien est le suivant :
au lieu de 3 to 50, il raisonne en 4 to 51 c'est à dire qu'il commence la saisie automatique à partir de D4 pour terminer en D51.
Je voulais savoir autre chose si possible: arrivé au champ 30, je dois faire SHIFT+F3 pour que la saisie puisse se poursuivre.Egalement au 35 champ, je dois faire SHIFT+F6 pour valider l'ouverture du compte. Est-il possible d'intégrer dans l'automatisme SHIFT+F3 et SHIFT+F6 de sorte que je n'ai pas à le faire manuellement?
C'est un outil qui doit être utilisé par plusieurs personnes donc je veux si possible prendre en compte tous les aspects.

Code:
Sub activation()
'On Error GoTo gestionerreur
AppActivate "NOM DU LOGICIEL ICI"
For i = 3 To 50
    SendKeys Cells(i, 4).Value
    attendre 1
    SendKeys "~"
    attendre 1
Next
Exit Sub
gestionerreur:
MsgBox "fichier non ouvert ou réduit dans la barre des tâches : abandon"
End Sub

Sub attendre(sec%)
Dim deb&, fin&
deb = Timer
fin = deb + sec%
Do Until Timer >= fin
DoEvents
Loop
End Sub

Merci pour tout ce que vous avez déjà fait. c'est considérable.
Que le tout puissant vous en recompense également.
 
Dernière édition:

ERIC S

XLDnaute Barbatruc
Re : Copier-coller des données d'excel vers un logiciel

Bonjour

l'aide sendkeys est assez complète à partir de la fenêtre excel vba, tu y trouveras toute la panoplie des codes, entre autres :

Vous pouvez aussi spécifier des touches combinées avec MAJ et/ou CTRL et/ou
ALT. Pour spécifier une combinaison de touches, utilisez le tableau suivant.

Pour combiner une touche avec :
Précédez le code de la touche de :
ALT
% (signe de pourcentage)
CTRL
^ (signe d'insertion)
MAJ
+ (signe plus)


touche et code
De F1 à F15
{F1} à {F15}
 

Discussions similaires

Statistiques des forums

Discussions
312 370
Messages
2 087 688
Membres
103 639
dernier inscrit
NIEMASAFI