Copier/coller Interop Excel

Signaler
Messages postés
29
Date d'inscription
lundi 13 mai 2002
Statut
Membre
Dernière intervention
22 mars 2013
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
PS : la prochaine fois, utilise la coloration syntaxique (3eme icone à droite) = plus facile à lire.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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.