QR-factures pour la Suisse

@ Steelson

voici quelque chose "clé en main"... pour la fermeture de la dernière fenêtre active de chrome, si il est ouvert et caché par une autre application... (si il n'y avait qu'un seul onglet=> fermeture de l'instance, si il y avait plusieurs onglet fermeture du dernier actif => donc en théorie pour notre cas la fenêtre qui a généré le QRcode.

Marche pas si il est réduit...

Fred

Sub fermer_dernier_onglet_chrome()
fermer_onglet_chrome
End Sub
Sub fermer_onglet_chrome()
Dim reseau As Object
Dim ordinateur As String
Dim objWsProcess
Dim objProc
Set reseau = CreateObject("WScript.Network")
Set oShell = CreateObject("wscript.shell")

ordinateur = LCase(reseau.ComputerName)
Set objWsProcess = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & ordinateur).InstancesOf("Win32_Process")
'on va parcourir tous les processus lancer sur la machine
For Each objProc In objWsProcess
    'si le nom du processus est Chrome on l'active et on quitte
    'Debug.Print objProc.Name & "," & objProc.executablepath _
            & "," & objProc.Priority & "," & objProc.sessionid _
            & "," & strNameOfUser & "," & objProc.handlecount _
            & "," & objProc.ThreadCount & "," & objProc.processID
    If objProc.Name = "chrome.exe" Then
        'debug.print objProc.ProcessID
        'activation de la fenetre...
        oShell.AppActivate (objProc.ProcessID)
        'raccourci clavier pour CTR+F4
        clavier = "^{F4}"
        'envoi de la sequence du clavier
        oShell.SendKeys clavier
        Application.wait Now + TimeValue("00:00:02")
        Exit Sub
    End If
Next
End Sub

Fred ... c'est génial, cela risque de me servir plus d'une fois !

Jusqu'à présent j'utilisais SendKeys "^{F4}" mais cela fermait la totalité des onglets ! ou bien j'allais dans la barre d'adresse et je lançais qwant !

  1. edit1 ... en effet F4 peut s'exécuter sur le dernier onglet (en fait celui qui est actif) mais pour cela il faut utiliser le processID. Or ce dernier n'est pas directement accessible quand on utilise ShellExecute. Il faudrait utiliser Shell et spécifier le programme d'exécution. Ou bien utiliser en effet ta routine. Bravo !
  2. edit2 ... il faudrait savoir sur quel navigateur la page temporaire a été lancée ... je vais réfléchir à ce point
  3. edit3 ... autre version (à voir si cela fonctionne en 64bits)
    Sub fermer_chrome()
        Set oShell = CreateObject("wscript.shell")
        For Each Process In GetObject("winmgmts:").InstancesOf("Win32_process")
            If UCase(Process.Name) = UCase("chrome.exe") Then
                oShell.AppActivate (Process.processID)
                oShell.SendKeys "^{F4}"
                Exit Sub
            End If
        Next
    End Sub

Salut Steelson, bonjour les autres intervenants,

Steelson, j'avais déjà constaté que selon le contenu du presse-papier, le code bloquait à la place d'en coller le contenu, comme il le fait pour du texte. Par exemple si je copie une cellule à la place d'en copier le contenu. Dans un tel cas, le code bloque sur la ligne activeSheet.Paste :

capture

Il en va de même si le presse-papier contient une image. Je n'avais pas pensé de t'en parler plus tôt, pensant que ce problème allait se résoudre de lui-même lors des prochaines adaptations.

Amicalement.

Bonsoir Yves.... je vais essayé de répondre à ta question... ce problème de collage est aussi arrivé chez moi quand la position en pixel du clic de souris "COPIER L'IMAGE" était mal placé..

je vais essayé de te dire comment j'ai fais...

1°) lanver VBA editor et mettre un point d’arrêt sur cette ligne

capture

2°) lancer le code en auto = > ctrl+q

3°) au moment ou le code s’arrête sur le point d'arrêt, appuie sur le bouton du clavier "imprime écran"

4°) tu ouvres un "Paint" et colle

5°) ensuite tu trouve la position en pixel pour laquelle si on appuie dessus on cliquera sur "COPIER L'IMAGE".

J'ai représenté en rouge la position de la souris..(pour permettre de te donner une image). Chez moi l’analyse donne la position vertical =260pixels.. et position Horizontale= 133pixels..

excelpratique

6°) Tu fais arrêter l’exécution du code.. qui était en pause sur le point d'arrêt..

tu supprime le point d'arrêt et dans la feuille HowTo cellules D20-E20 tu met à jour la position de la souris avec les valeurs trouvées avec Paint..

excelpratique2

7°) Tu relances le code en auto...

Chez moi cela a résolu le problème de COLLER

Bonne soirée

Fred

Salut Fred,

Merci pour ton intervention.

Au point 3 de ton explication, j'appuie sur la touche PrtScn de mon clavier (celle qui doit correspondre à ''imprime écran'' indiqué dans ton texte) et l'image que je colle dans Paint est celle ci-dessous :

capture

On y voit les deux onglets internet ouverts mais pas d'indication en bas à gauche, à l'endroit où tu trouves ''133, 260px''.

J'utilise ''Outil Capture d'écran'' pour mes ''Print Screen'' ; est-ce de là que vient le problème ? Je présume que je ne copie pas ce que je devrais avec ma touche ''PrtScn''.

J'ai essayé d'effectuer en clic droit sur l'image et de choisir l'option ''Copier l'image'' et de la coller dans Paint, mais sans plus de succès :

capture 1

As-tu une idée de ce que je fais faux ?

Amicalement.

Bonjour....

au moment ou le code s’arrête tu devrais avoir le menu contextuel (clique droit sur l'image) d'afficher :

menu : ouvrir l'image dans un nouvel onglet / enregistrer l'image sous... / copier l'image.......

capture

Si tu ne le vois pas c'est que peut-être dès le départ... la position de la souris par excel est mal placé... donc il faudra peut-être aussi réglé la position ou se fait le clique droit.. dans les cellules D19-D20...

quand tu as obtenu ceci dans paint (ce qu'il faut mais avec le menu contextuel) :

image

je vois que l'image est encore sélectionnée (petits traits bleu sur le coté) il faut que tu sorte de l'image..donc tu "de-zoom" et clique quelque part dans paint en dehors de l'image...

une fois fait... lorsque tu promène ta souris sur l'image tu verras en bas a gauche la position de ton curseur de souris représentée par une croix (chez moi)

Dis moi déjà si cette partie est OK

Fred

J'ai essayé d'effectuer en clic droit sur l'image et de choisir l'option ''Copier l'image'' et de la coller dans Paint, mais sans plus de succès :

capture 1

Cette partie c'est exactement ce qu'essai de faire le code vba... clique droit sur l'image puis clique "copier l'image" puis de la coller dans excel...

Fred

Relance juste l'adresse de la page html directement sur chrome, là tu fais clic droit et ensuite copie d'écran pour avoir aussi le menu déroulant !

Sinon il y a une autre solution c'est mettre provisoirement exit sub après l’instruction shellexecute

Bonjour et merci à vous deux de continuer à vouloir m'aider.


@ Fred

Tu as écrit : ''Si tu ne le vois pas (le menu contextuel) ............ il faudra peut-être aussi réglé la position ou se fait le clique droit.. dans les cellules D19-D20...''.

Alors effectivement que je ne vois pas le menu contextuel lorsque j'arrête la macro à cet endroit. Mais comment faire pour régler ces cellules D19-D20 (ou plutôt D19-E19 ?) ?

@ Steelson

J'ai essayé de placer l'instruction Exit Sub juste après ShellExecute 0, "open", Environ("TEMP") & "\" & "qrcode.htm", vbNullString, "C:\TEMP\", 1, mais l'image du QR-Code sur internet n'a toujours pas de menu contextuel ouvert.

Je n'ai pas compris ce que tu voulais dire par : "Relance juste l'adresse de la page html directement sur chrome''. J'ai bien tenté de copier l'adresse C:/Users/Yvouille/AppData/Local ........." qu'on voit ci-dessous pour la remettre dans un autre onglet, mais la copie est identique, sans menu contextuel.

capture

Aïe, aïe, aïe !

Bonsoir Yves...

bonsoir tout le monde

dans le fichier initial de Steelson dans les cellules D19E19 il y a les coordonnées x=60 y=200 ce qui fait que lorsque je regarde cette position sur mon image avec ma résolution d'écran cela donne a peu près cela... (voir le point rouge dans l'image du QRcode)

excelpratique

Cela veut donc dire que cette position est sur l'image du QRcode chez moi... et donc quand le code demande à la souris de faire "clic droit" je suis sur l'image => donc le menu contextuel apparaît...

il faut que tu vérifie ou détermine sur ton PC avec Paint (tu ouvre le htm avec chrome en pleine page, et tu fais une impression ecran... pas besoin de faire executer le code si tu sais ou se trouve le fichier htm...) une position où demander à la souris de faire le clic droit pour être sur d'être dans l'image du QRcode... et donc éventuellement mettre à jour ces cellules D19E19... en conséquence..

Fred

Re...

pour la position du Exit sub... il est mal placer si tu l'as mis ici :

juste après ShellExecute 0, "open", Environ("TEMP") & "\" & "qrcode.htm", vbNullString, "C:\TEMP\", 1,

il faut le mettre plus bas...

j'ai commenter le code de Steelson et indiqué où il faut mettre le exit sub temporaire... ainsi tu comprendra peut-être un peu mieux pourquoi il faut mettre le exit sub plus bas...

 'positionne le pointeur de souris à la position x-y en cellule D19-E19 pour faire le clic droit souris => menu contextuel
    posX = [qrx]: posY = [qry]
    Call SetCursorPos(posX, posY)
    'réalise le clic droit souris à la position précédente
    mouse_event MOUSEEVENTF_RIGHTDOWN + MOUSEEVENTF_RIGHTUP, posX, posY, 0, 0
    Application.wait (Now + TimeValue("00:00:02"))
        'sortir de la sub temporairement pour faire l'impression écran pour déterminer la position du "Copier l'image" du menu contextuel qui est normalement apparu
        Exit Sub

    'positionne le pointeur de souris à la position x-y en cellule D20-E20 pour clique Gauche souris sur "Copier l'image"
    posX = [crx]: posY = [cry]
    Call SetCursorPos(posX, posY)
    'réalise le clic gauche de la souris
    mouse_event MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP, posX, posY, 0, 0
    Application.wait (Now + TimeValue("00:00:02"))

Fred

@ Steelson

J'ai essayé de placer l'instruction Exit Sub juste après ShellExecute 0, "open", Environ("TEMP") & "\" & "qrcode.htm", vbNullString, "C:\TEMP\", 1, mais l'image du QR-Code sur internet n'a toujours pas de menu contextuel ouvert.

Je n'ai pas compris ce que tu voulais dire par : "Relance juste l'adresse de la page html directement sur chrome''. J'ai bien tenté de copier l'adresse C:/Users/Yvouille/AppData/Local ........." qu'on voit ci-dessous pour la remettre dans un autre onglet, mais la copie est identique, sans menu contextuel.

capture

Pour moi, si tu vois cela c'est super. Ensuite, mets ta souris sur le QRCode et fais un clic droit avec la souris, le menu contextuel doit apparaître.

Sinon en effet, Fred a raison de déplacer le exit sub comme il le propose.

Je vais du reste préparer en plus de "manuel" et "auto" un mode "mise au point" qui fera ce que Fred propose !

il faut le mettre plus bas...

tu as raison, car il y a peu d'écarts sur les premières valeurs correspondant à la position du clic droit

Steelson, tu es trop rapide, j'étais en train de préparer une réponse. Tans pis, je la poste comme préparée :

Wow, je viens éventuellement de comprendre quelque chose.

Mais je voudrais d’abord expliquer une bizarrerie de Paint. Lorsque je colle l’image du QR-Code dans ce programme, je n’ai tout d’abord pas de références en bas à gauche. Si j’effectue un clic gauche, des chiffres apparaissent très brièvement quand même en bas à gauche lorsque je relâche mon clic, mais tellement brièvement qu’il est impossible de lire les deux chiffres. Puis si j’agrandis l’image, ces références apparaissent soudainement tout à fait normalement, même si je réduis l’image à nouveau !!!

Comme j’ai maintenant une image de mon QR-Code avec le menu contextuel ouvert à l’écran, je l’ai collée dans Paint et – par le stratagème indiqué ci-dessus – je peux voir que la position 60/200 à laquelle s’ouvre ce menu est en plein sur l’image du QR-Code.

Ce que j’ai l’impression d’avoir alors compris est que je devais simplement contrôler qu’avec ces références 60/200, la fenêtre s’ouvre bien sur l’image du QR-Code et non pas à côté, ce qui est bien le cas, la fenêtre du menu contextuel s’ouvre pratiquement au milieu du QR-Code.

Mais il n’en demeure pas moins que si je relance la macro entière en automatique, l’image du QR-Code n’est toujours pas copiée dans le presse-papier, ni collée. C’est la dernière image enregistrée qui l’est.

capture

Eureka !

J'ai relu les informations de Fred, celles de samedi soir, et j'ai encore compris comment modifier les deuxièmes références afin que l'option ''Copier l'image'' soit actionnée elle aussi !

Ces prochains jours, je vais faire plus d'essais et reviendrai probablement avec d'autres questions.

Déjà un tout grand merci à vous deux pour votre aide

capture

Eureka !!!!

Ravis que cela fonctionne chez toi...

Bons tests!!!!

Bonne soirée

Fred

Merveilleux, wonderful, wunderbar, ... pour les langues exotiques, ce n'est pas possible

Erreur : le champ "Message" contient des caractères non valides.

J'ai résumé ici https://www.excel-pratique.com/fr/telechargements/utilitaires/creer-qrcode-excel-no499 les possibilité avec javascript, en toute autonomie par rapport à internet !

La tentation est grande d'utiliser un code disponible sur internet, de faire appel à des API type Google. Il faut toutefois considérer que par ce biais des informations sensibles pourraient être alors transférées. La conséquence est de ne plus être conforme au règlement européen RGPD pour les pays concernés. Le règlement nᵒ 2016/679, dit règlement général sur la protection des données, est un règlement de l'Union européenne qui constitue le texte de référence en matière de protection des données à caractère personnel.

Merci aux apports de chacun, notamment Fred, c'est là où un forum trouve sa place, dans les contributions croisées. Poussé dans mes retranchements, j'y ai appris des choses mais aussi avec les codes de Fred !

Bonsoir à tous..

Bonsoir Steelson...

Je viens de télécharger l'appli que tu as mis a dispo dans "téléchargement"...

j'ai, a priori, tout lu.. il manque peut-être dans le zip ( ou dans le fichier excel) une petite notice de comment faire la mise au point ... donc retrouver la bonne position en pixel avec Paint... même si tu as mis un lien vers ce sujet... je penses que cela serait utile...

Fred

Bonsoir,

J'ai continué d'avancer avec mon projet et ai transformé le fichier reçu de Steelson afin d'en faire une QR-Facture helvétique. Tout allait bien jusqu'à ce que je remplace les données de base de Steelson par les données de base réellement nécessaires, c'est à dire la plage AZ85:BB119 de la feuille ''Main'' du fichier ci-joint.

Mais alors, au moment où la macro devrait créer le QR-Code sur l'explorateur Internet, mon texte est bien visible sur la gauche, mais le QR-Code n'est pas préparé et une fenêtre s'ouvre sur la droite, selon l'image ci-dessous. Est-ce parce que la quantité d'informations est trop grande et qu'il faudrait choisir une autre taille que 120x120 ???

capture

Dans l'espoir de votre aide.

Bonnes salutations.

14qrcode-js.xlsm (100.64 Ko)
Rechercher des sujets similaires à "factures suisse"