Erreur qui s e pointe comme par enchantement [Résolu]

Signaler
Messages postés
41
Date d'inscription
vendredi 3 décembre 2010
Statut
Membre
Dernière intervention
11 février 2014
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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

6 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
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

Bonjour,

Remplace :

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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
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
Messages postés
41
Date d'inscription
vendredi 3 décembre 2010
Statut
Membre
Dernière intervention
11 février 2014

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.
Messages postés
41
Date d'inscription
vendredi 3 décembre 2010
Statut
Membre
Dernière intervention
11 février 2014

Bonsoir,
Et pourquoi sont-ils bannis?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
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