r0man0
Messages postés41Date d'inscriptionvendredi 3 décembre 2010StatutMembreDernière intervention11 février 2014
-
7 août 2012 à 15:55
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
11 août 2012 à 18:41
Bonjour, je suis agacé, j'ai une macro qui fonctionnait bien jusqu'à aujourd'hui sauf que depuis deux heures elle me sort [erreur d’exécution "13" incompatibilité de type] je suis un peu embêté j'ai passé pas mal de temps dessus et je devais la présenter demain à mon bureau pourriez-vous m'aider please, je vous joint le code concerné avec la ligne qui fâche... en REM, merci bcp.
Sub FICELLEWPT()
Dim Destination As Range
Dim MaPlage As Range
Dim Fs As Object, U As Object
Dim k As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("Work_Sheet_1").Select
Cells.ClearContents
Sheets("WPT_FLITESTAR").Select
Cells.ClearContents
Sheets("Compilation").Select
Set Destination = Sheets("Work_Sheet_1").Range("A1")
Set MaPlage = Sheets("Compilation").Range("A1:M" & Sheets("Compilation").Range("A65536").End(xlUp).Row)
Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, tbl.Columns.Count).Select
MaPlage.Copy Destination
Sheets("Work_Sheet_1").Select
Range("N1").FormulaR1C1 = "1"
Cells.Find("*", after:=[A1], LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, searchdirection:=xlPrevious, _
MatchCase:=False, SearchFormat:=False).Select
n = Selection.Row
For i = 1 To n
Cells(i, 14).FormulaR1C1 = _
"=R[-1]C+1"
Cells(i, 15).FormulaR1C1 = _
"=RC[-9]+((500*RC[-8]+3*RC[-7])/30000)"
Cells(i, 17).FormulaR1C1 = _
"=RC[-7]+((500*RC[-6]+3*RC[-5])/30000)"
Cells(i, 16).FormulaR1C1 = _
"=IF(RC[-11]=""s"",-RC[-1],RC[-1])"
Cells(i, 18).FormulaR1C1 = _
"=IF(RC[-9]=""W"",-RC[-1],RC[-1])"
Cells(i, 20).FormulaR1C1 = _
"=CONCATENATE(C[-6],"","",C[-16],"", "",C[-4],"","",C[-2],"",39154.4176025, 111, 4, 5, 255, 13158342,0, 0, 0, -777, 10, 8, 1,10,0,2.0,2,,,"")"
Next i
Range("T1:T65000").Copy
Sheets("WPT_FLITESTAR").Columns("A:A").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("WPT_FLITESTAR").Select
For j = 1 To 4
Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Next j
Range("A1").FormulaR1C1 = "OziExplorer Waypoint File Version 1.1"
Range("A2").FormulaR1C1 = "WGS 84"
Range("A3").FormulaR1C1 = "Reserved 2"
Range("A4").FormulaR1C1 = "lei28"
Set Fs = CreateObject("Scripting.FileSystemObject")
Set U = Fs.CreateTextFile("G:\tst flitestar\Waypoint\WPT_FLITESTAR.wpt", True)
With Sheets("WPT_FLITESTAR")
For k = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
'U.WriteLine (.Range("A" & k).Value)
Next k
End With
U.Close
Set U = Nothing
Set Fs = Nothing
Sheets("Main_Sheet").Select
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox ("Export WAYPOINT réussi")
End Sub
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 10 août 2012 à 13:09
je n'ai pas bien saisie ton allusion à FSO, ucfoutu
C'est pourtant clair : Au lieu de tout ce code ralentisseur et alourdissant (qui passe par un FSO bien ridicule ici ) :
Set Fs = CreateObject("Scripting.FileSystemObject")
Set U = Fs.CreateTextFile("G:\tst flitestar\Waypoint\WPT_FLITESTAR.wpt", True)
With Sheets("WPT_FLITESTAR")
For k = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
'U.WriteLine (.Range("A" & k).Value)
Next k
End With
U.Close
une simple utilisation de l'instruction Open pour écrire dans ton fichier (for output), en n'utilisant que VBA (mille fois plus légèrement) , tel qu'il est et est conçu pour !
ouvre donc ton aide VBA, s'il te plait, sur le mot Open ! Tu y trouveras même des exemples !
Juste une chose, pour ton information : ton code, même correctement écrit, ne fonctionnerait pas sur mes machines (VBS et donc FSO y sont bannis ! D'autres - les plus prudents - les bannissent également... alors ...)
Te voilà informé.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
With Sheets("WPT_FLITESTAR")
For k = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
'U.WriteLine (.Range("A" & k).Value)
Next k
End With
par
dim z as variant
With Sheets("WPT_FLITESTAR")
For k = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
z= .Range("A" & k).Value
U.WriteLine (z)
Next k
End With
Ensuite mets un espion sur z et passe ta boucle au pas à pas. Tu devrais au moins savoir c'est quoi la valeur qui cause problème.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 7 août 2012 à 22:24
Bonjour,
Je ne comprendrais jamais que l'on utilise FSO (lourdaud et superfétratoire alors que l'on dispose de VBA et de son instruction méthode Open).
De mémoire (car j'au banni VBS de ma machine) :
Dim U As Scripting.TextStream et non as object.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
r0man0
Messages postés41Date d'inscriptionvendredi 3 décembre 2010StatutMembreDernière intervention11 février 2014 10 août 2012 à 12:16
Salut, ucfoutu et cmarcotte, je n'ai pas bien saisie ton allusion à FSO, ucfoutu, cmarcotte j'ai effectivement trouvé l'erreur elle était liée à une ligne de mon .txt dont la chaîne de caractère qui compose le nom de mon point intégrait un point, donc ça posait problème, par contre j'essaye de trouver une solution pour corriger cette erreur automatiquement quand je la rencontre, ce qui est assez rare.
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 11 août 2012 à 18:41
Et pourquoi sont-ils bannis?
Ca, ami, c'est MON affaire, hein !
J'ai mes raisons (et ne suis pas le seul), notammebnt de sécurité. Pas de VBS dispoinible, donc !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ