Re : Copier coller 2 cellule en 1
Bonsoir, j'ai essayé de rajouter une variable comme tu m'as suggéré fhoest, mais j'ai du mal à la placer ..
J'ai essayé aussi le code de Dranreb, mais là, je sais même pas, ou, et comment l'insérer, ayant une connaissance de Vba et Excel médiocre, je vous remercie d'avance de votre aide.
Je vous envois le code complet, et si vous avez 5 min, me faire voir ou est ce qu'on met tout ça !
'--------------------------------------------------------------------------------
' Cette macro a été créée par l'enregistreur de macros.
' Document de session : "C:\ProgramData\RobotEPC.110\Sessions\SYGMACHI-EXPL.edp"
' Date : Thursday, August 18, 2011 12:27:12
'--------------------------------------------------------------------------------
' Déclarations des variables globales
Global g_HostSettleTime%
Global g_szPassword$
Sub Etat_OI()
Do
'--------------------------------------------------------------------------------
' Cherche l'objet principal du système
Dim Sessions As Object
Dim System As Object
Set System = CreateObject("EXTRA.System") ' Cherche l'objet du système
If (System Is Nothing) Then
MsgBox "Impossible de créer l'objet du système EXTRA. L'exécution de la macro est interrompue."
Stop
End If
Set Sessions = System.Sessions
If (Sessions Is Nothing) Then
MsgBox "Impossible de créer l'objet de la collection Sessions. L'exécution de la macro est interrompue."
Stop
End If
'--------------------------------------------------------------------------------
' Définir la valeur du délai d'attente par défaut
g_HostSettleTime = 200 ' millisecondes
OldSystemTimeout& = System.TimeoutValue
If (g_HostSettleTime > OldSystemTimeout) Then
System.TimeoutValue = g_HostSettleTime
End If
' Cherche l'objet nécessaire pour la session
Dim Sess0 As Object
Set Sess0 = System.ActiveSession
If (Sess0 Is Nothing) Then
MsgBox "Impossible de créer l'objet Session. L'exécution de la macro est interrompue."
Stop
End If
If Not Sess0.Visible Then Sess0.Visible = True
Sess0.Screen.WaitHostQuiet (g_HostSettleTime)
' Cette section du code contient les événements enregistrés.
'--------------------------------------------------------------------------------
'Sélectionne le cible du clic de la souris
Worksheets("Tableau B3").Rows(1).Copy
'Effectue une copie de la sélection
Selection.Copy
'Script Sygma
Sess0.Screen.SendKeys ("<Home>")
Sess0.Screen.WaitHostQuiet (g_HostSettleTime)
Sess0.Screen.SendKeys ("=2.1.5_")
Sess0.Screen.WaitHostQuiet (g_HostSettleTime)
Sess0.Screen.SendKeys ("<Enter>")
Sess0.Screen.WaitHostQuiet (g_HostSettleTime)
Sess0.Screen.Paste
Sess0.Screen.WaitHostQuiet (g_HostSettleTime)
Sess0.Screen.SendKeys ("<Enter>")
Sess0.Screen.WaitHostQuiet (g_HostSettleTime)
'--------------------------------------------------------------------------------
Set MyScreen = Sess0.Screen
Set MyArea = MyScreen.Area(4, 64, 4, 70)
MyArea.Select
Sess0.Screen.Copy
System.TimeoutValue = OldSystemTimeout
ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste
ActiveCell.Offset(1, -1).Select
Loop Until ActiveCell.Value = ""
End Sub
Donc avec cette macro, elle me recherche automatiquement le texte qui est situé sur la ligne 4, colonne 64 à 70
Set MyArea = MyScreen.Area(4, 64, 4, 70)
Le logiciel, fait une copie de cette zone, colle sur mon tableau Excel, et revient à la ligne du dessous pour relancer la macro, et s'arrête dès qu'il y a une cellule vide (Loop). Le seul hic dans tout ça, c'est que "coller", me prend 2 cellules en longueur, car le texte copier contient un espace entre les 2 mots ...
Merci beaucoup de votre aide !