Copier/coller Interop Excel

cs_Jaxom Messages postés 29 Date d'inscription lundi 13 mai 2002 Statut Membre Dernière intervention 22 mars 2013 - 25 mai 2011 à 21:03
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 26 mai 2011 à 00:06
Bonjour,

Je fais des exportations de datatable via Excel en passant par le clipboard.

Ca fonctionne très bien sauf dans certains cas.

Prenons par exemple une adresse:

Champs Rue : Rue du schmoll
Champs Num : 25
Champs BP : B
Champs CP : 56000

Donne Rue du Schmoll 25 B 56000 (sur 4 colonnes dans Excel)

Cet exemple ci par contre:

Champs Rue : Rue du schmoll
Champs Num : 2-4
Champs BP : B
Champs CP : 56000

Donne Rue du schmoll 02-févr. B 56000 (sur 4 colonnes dans Excel)

Y-a-t-il un moyen pour forcer Excel à copier les données sans vouloir à tous prix interprêter ce qu'il reçoit?

Merci d'avance pour vos suggestions ^^

Ci-dessous le code de ma fonction:

For Each xx As DataGridViewRow In Grille.Rows
TextusACopierColus =""
Ligne = GetLigneEnCours(xx.Cells("id").Value)
With Ligne
TextusACopierColus &= .Item("Affilies_Com_Nom").ToString & vbTab
TextusACopierColus &= .Item("Affilies_Com_PreNom").ToString & vbTab
TextusACopierColus &= .Item("Affilies_Com_Rue_Id").ToString & vbTab
TextusACopierColus &= .Item("Affilies_RueSiege").ToString & vbTab
TextusACopierColus &= .Item("Affilies_Com_RueNum").ToString & vbTab
TextusACopierColus &= .Item("Affilies_Com_RueBoite").ToString & vbTab
TextusACopierColus &= .Item("Affilies_CPSiege").ToString & vbTab
TextusACopierColus &= .Item("Affilies_Prv_Nom").ToString & vbTab
TextusACopierColus &= .Item("Affilies_Prv_PreNom").ToString & vbTab
TextusACopierColus &= .Item("Affilies_Prv_Rue_Id").ToString & vbTab
TextusACopierColus &= .Item("Affilies_Prv_RueNum").ToString & vbTab
TextusACopierColus &= .Item("Affilies_Prv_RueBoite").ToString & vbTab
TextusACopierColus &= vbTab
TextusACopierColus &= vbTab
TextusACopierColus &= .Item("Affilies_conseiller_GPU").ToString & vbTab
TextusACopierColus &= .Item("Affilies_Rejet").ToString.Trim & vbCrLf
End With
Next
Try
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
xlApp = CType(CreateObject("Excel.Application"), Excel.Application)
xlBook = CType(xlApp.Workbooks.Add, Excel.Workbook)
xlSheet = xlBook.Sheets(1)
Clipboard.SetDataObject(TextusACopierColus) 'Setdataobject ou settext même résultat
'Clipboard.SetText(TextusACopierColus)
xlSheet.Range("A1").Select()
xlSheet.Paste()
xlSheet.Cells.Select()
xlSheet.Cells.EntireColumn.AutoFit()
xlSheet.Range("A1").Select()
xlApp.Visible = True
xlSheet.Visible = True
Catch ex As Exception

End Try




-Perdu dans les méandres de la création virtuelle-

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 mai 2011 à 00:03
Salut

Es-tu sûr que ce soit l'insertion qui pose problème ?
As-tu regardé du côté du .PasteSpecial où l'on peut choisir de ne coller que la valeur, ou le format ...

Dans Excel, les valeurs ne sont jamais modifiées, ce n'est que l'affichage qui prend un format particulier, pas la donnée. Donc, en lisant une donnée, on doit pouvoir la faire ressortir sans son format.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 mai 2011 à 00:04
PS : la prochaine fois, utilise la coloration syntaxique (3eme icone à droite) = plus facile à lire.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 mai 2011 à 00:06
Concernant la donnée et son affichage, penche toi sur les trois propriétés suivantes d'une cellule :
.Value
.Value2
.Text
Tu verras que selon le format utilisé (flagrant avec les dates), les infos extraites sont vraiment différentes.
0
Rejoignez-nous