Excel - VBA - Copier du texte au double clic [résolu] - VB/VBA/VBS - Programmation
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
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))
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.
Marsh Posté le 10-06-2007 à 20:31:05
ingenieurcesi a écrit : avec un .txt tu peux utiliser ce code |
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
.....
Marsh Posté le 10-06-2007 à 20:38:25
..... Je dois certainement me compliquer la tache
Si quelqu'un pouvait me modifier ce code
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
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
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
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
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
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.
Pouvez m'aider à résoudre ce problème. Merci
Message édité par didieraucun le 14-06-2007 à 21:48:40