cs_Jaxom
Messages postés29Date d'inscriptionlundi 13 mai 2002StatutMembreDernière intervention22 mars 2013
-
25 mai 2011 à 21:03
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 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-
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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.