Excel - VBA - Copier du texte au double clic [résolu]

Excel - VBA - Copier du texte au double clic [résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 09-06-2007 à 11:03:05    

J'utilise une macro pour copier automatiquement au double clic du texte provenant d'un document word
http://img178.imageshack.us/img178/4343/clipboard1in9.jpg
 
Quand le texte sélectionné est copié, les cellules collées sont verticales alors que je les voudrais horizontale. Car les valeurs dans mes cellules B3 et B4 sont écrasées.  :(  
 
http://img510.imageshack.us/img510/7898/clipboard1dx4.jpg
 
http://img148.imageshack.us/img148/5632/clipboard1vr3.jpg
 
Pouvez m'aider à résoudre ce problème. Merci  :hello:


Message édité par didieraucun le 14-06-2007 à 21:48:40
Reply

Marsh Posté le 09-06-2007 à 11:03:05   

Reply

Marsh Posté le 09-06-2007 à 11:38:27    

bonjour,
 
est ce qu'un fichier word est un fichier sequentiel ?
à la place du fichier word tu peux utilise un .txt ? parce que si oui j'ai une solution

Reply

Marsh Posté le 09-06-2007 à 11:46:46    

avec un .txt tu peux utiliser ce code
 
ligne = 3
Open "C:\tonfichier.doc" For Input As 1
For k = 1 To ligne Step 1
If EOF(1) Then GoTo NoMoreValueA
Line Input #1, ref
Worksheets("a" ).Cells(1, k).FormulaR1C1 = ref
Next
NoMoreValueA:
Close 1
End Sub
 
par contre ca mets le contenu entier de ta ligne
donc faut utiliser Mid
tu sais que ta première ligne sera tj de la forme Titre: bbbbb donc ce que tu veux recuperer commence au 8ieme caractere --> ref=trim(mid(ref,8,100))
 

Reply

Marsh Posté le 09-06-2007 à 18:04:34    

Essaie la manipulation suivante (de mémoire) :
1/ sélectionne et copie tes cellules
2/ clic droit et choisis Collage spécial
3/ coche la case/l'option Transposition (dépend peut-être de la version Excel) puis valide
 
Si le résultat te convient, il suffit d'utiliser l'enregistreur de macro pour connaître le code correspondant et t'en inspirer.

Reply

Marsh Posté le 10-06-2007 à 20:31:05    

ingenieurcesi a écrit :

avec un .txt tu peux utiliser ce code
 
ligne = 3
Open "C:\tonfichier.doc" For Input As 1
For k = 1 To ligne Step 1
If EOF(1) Then GoTo NoMoreValueA
Line Input #1, ref
Worksheets("a" ).Cells(1, k).FormulaR1C1 = ref
Next
NoMoreValueA:
Close 1
End Sub
 
par contre ca mets le contenu entier de ta ligne
donc faut utiliser Mid
tu sais que ta première ligne sera tj de la forme Titre: bbbbb donc ce que tu veux recuperer commence au 8ieme caractere --> ref=trim(mid(ref,8,100))


 
Merci mais je ne peux utiliser ce programme car les valeurs à copier peuvent être n'importe où dans le document.  :(  
La proposition de tegu ne marche pas. Le collage spécial ne propose pas de coller en transposé pour des valeurs venant de word.
Par contre si je pouvais copier ces valeurs dans une feuille cachée puis revenir dans ma cellule d'origine et les coller en transposé, alors cela devrait marcher :
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 Range("C10:C12" ).Select  ; il faudrait qu'il copie ça dans une feuille caché
    ActiveSheet.Paste
Range("C10:C12" ).Select ; il selectionne de nouvreau les valeurs
    Selection.Copy ; il les copies dans sa petite mémoire
    Range("A1" ).Select ; la par contre il faudrait qu'il colle les valeurs à l'endroit où j'ai double cliqué
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
End Sub
 
.....

Message cité 1 fois
Message édité par didieraucun le 10-06-2007 à 20:38:50
Reply

Marsh Posté le 10-06-2007 à 20:38:25    

.....  Je dois certainement me compliquer la tache  :??:  
Si quelqu'un pouvait me modifier ce code  ;)  :ange:


Message édité par didieraucun le 10-06-2007 à 20:39:11
Reply

Marsh Posté le 10-06-2007 à 21:15:34    

didieraucun a écrit :

Merci mais je ne peux utiliser ce programme car les valeurs à copier peuvent être n'importe où dans le document.  :(  


 
b comment tu fais pour les recupere si tes données peuvent etre n'importe ou ?
 
EDIT:
tu peux mettre un ou plusieurs de tes fichiers .doc en temps qu'exemple. peut etre sur cjoint si tu c pas koi utiliser

Message cité 1 fois
Message édité par ingenieurcesi le 10-06-2007 à 21:17:54
Reply

Marsh Posté le 10-06-2007 à 23:56:15    

ingenieurcesi a écrit :

b comment tu fais pour les recupere si tes données peuvent etre n'importe ou ?


Je vais dans le fichier WORD, je sélectionne mes valeurs, je fais copier et je vais dans excel pour utiliser mon double clic
en plus les noms des fichiers peuvent être à chaque fois différent  :pt1cable:

Reply

Marsh Posté le 11-06-2007 à 16:24:29    

Bonjour,
Comme d'habitude, à amélilorer:
Dim ddd As DataObject
 
Sub coco()
Set ddd = New DataObject
ddd.GetFromClipboard
z = ddd.GetText
u = Split(z, vbCrLf)
For i = 0 To UBound(u)
Selection.Offset(0, i) = u(i)
Next i
 
End Sub
Cordialement

Reply

Marsh Posté le 11-06-2007 à 23:37:50    

:(  
http://img515.imageshack.us/img515/2538/clipboard1nf7.jpg

Reply

Marsh Posté le 11-06-2007 à 23:37:50   

Reply

Marsh Posté le 12-06-2007 à 07:07:06    

Bonjour,
il te manque une référence , je vais chercher laquelle. Probable microsoft... dataobject..
@+
 
edit:
trouvé:
Microsoft Forms 2.0 Object library


Message édité par seniorpapou le 12-06-2007 à 07:23:37
Reply

Marsh Posté le 14-06-2007 à 21:47:47    

Oui, ça marche maintenant  :)  
Merci beaucoup  :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed