Excel : Ubound => Incompatibilité de type
Résolu
NaXiLeAn
Messages postés
112
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
A voir également:
- Ubound excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
5 réponses
Bonjour NaXiLeAn,
Bonne année 2017 !
1) LTInf non déclaré => type implicite : Variant
2) Range("K1:K1") = "<START>" => Range("K1") = "<START>"
3) Où est ton End Sub ?
4) Close est pour fermer un fichier qu'on a ouvert avant,
mais il n'y en n'a pas.
Cordialement. :)
Bonne année 2017 !
1) LTInf non déclaré => type implicite : Variant
2) Range("K1:K1") = "<START>" => Range("K1") = "<START>"
3) Où est ton End Sub ?
4) Close est pour fermer un fichier qu'on a ouvert avant,
mais il n'y en n'a pas.
Cordialement. :)
Bonjour Albkan,
Bonne et heureuse année :D
Mon code fait 4 pages, c'est juste un extrait :) c'est pourquoi le End Sub n'apparait pas.
Je souhaite exporter le contenu de la colonne K (hors ligne 1 : Titre / Nombre de lignes variable de la ligne 2 à l'infini) vers un fichier texte.
La colonne K peut contenir qu'une seule donnée.
Je met le code complet qui peut être plus claire :$
Bonne et heureuse année :D
Mon code fait 4 pages, c'est juste un extrait :) c'est pourquoi le End Sub n'apparait pas.
Je souhaite exporter le contenu de la colonne K (hors ligne 1 : Titre / Nombre de lignes variable de la ligne 2 à l'infini) vers un fichier texte.
La colonne K peut contenir qu'une seule donnée.
Je met le code complet qui peut être plus claire :$
Sub Export() Dim start As Single start = Timer With Worksheets("Edit") derlig = .Range("K" & Rows.Count).End(xlUp).Row Tinfos = .Range("K2:K" & derlig).Value End With If IsArray(Tinfos) Then LTInf = UBound(Tinfos, 1) Else LTInf = 1 ' Si une seule donnée dans colonne 'LTInf = UBound(Tinfos, 1) Close Fichier = "Imprim_" & Environ("username") & "_" & Format(Date, "yyyy-mm-dd") & "_" & Format(Time, "hh-mm-ss") & ".txt" Chemin = "C:\00_Export\" SepT = "" Open Chemin & Fichier For Output As #1 Print #1, "'<START>" For N = 1 To LTInf If Tinfos(N, 1) <> "" Then For NL = 1 To 1 If NL = 1 Then Print #1, Tinfos(N, 11) '11=> colonne K End If Next NL End If Next N Print #1, "</END>" Print #1, "//" Close 1 MsgBox "Traitement Terminé! Durée : " & Timer - start & " secondes" End Sub
Bonjour,
Erreur si tu n'as qu'une cellule, essaies :
Erreur si tu n'as qu'une cellule, essaies :
If IsArray(Tinfos) Then LTInf = UBound(Tinfos, 1) Else LTInf = 1
Bonjour,
Si tu n'as qu'une cellule tu ne peux pas utiliser "Tinfos" en tant que table car ce n'est qu'une variable : il te faut donc une branche spécifique.
Ceci plantera aussi car tu n'as mis qu'une colonne dans ta table et donc la colonne K est en 1 et non en 11 : tu veux l'utiliser ainsi il te faut mettre 11 colonnes dans ta table.
Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
Si tu n'as qu'une cellule tu ne peux pas utiliser "Tinfos" en tant que table car ce n'est qu'une variable : il te faut donc une branche spécifique.
Print #1, Tinfos(N, 11) '11=> colonne K
Ceci plantera aussi car tu n'as mis qu'une colonne dans ta table et donc la colonne K est en 1 et non en 11 : tu veux l'utiliser ainsi il te faut mettre 11 colonnes dans ta table.
Tinfos = .Range("A2:K" & derlig).Value
Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
Ce que je ne comprend pas c'est que ce code fonctionne parfaitement sur un autre fichier ou l'information est en colonne A...
Je pensais donc l'avoir compris :(
Est-ce que Tinfos me permet bien d'effectuer ma lecture ligne à ligne jusqu'à la dernière non vide?
J'ai effectué une modif et mon export fonctionne sauf dans le cas où la colonne K ne contient qu'une seule donnée (en K2)
Je pensais donc l'avoir compris :(
Est-ce que Tinfos me permet bien d'effectuer ma lecture ligne à ligne jusqu'à la dernière non vide?
J'ai effectué une modif et mon export fonctionne sauf dans le cas où la colonne K ne contient qu'une seule donnée (en K2)
Sub Export() Dim start As Single start = Timer With Worksheets("Edit") derlig = .Range("K" & Rows.Count).End(xlUp).Row Tinfos = .Range("K2:K" & derlig).Value End With 'If IsArray(Tinfos) Then LTInf = UBound(Tinfos, 1) Else LTInf = 1 ' Si une seule donnée dans colonne LTInf = UBound(Tinfos) Close Fichier = "Imprim_" & Environ("username") & "_" & Format(Date, "yyyy-mm-dd") & "_" & Format(Time, "hh-mm-ss") & ".txt" Chemin = "C:\00_Export\" SepT = "" Open Chemin & Fichier For Output As #1 Print #1, "'<START>" For N = 1 To LTInf If Tinfos(N, 1) <> "" Then For NL = 1 To 1 If NL = 1 Then Print #1, Tinfos(N, 1) '=> colonne 1 de la plage défini par Tinfos (k2;k) End If Next NL End If Next N Print #1, "</END>" Print #1, "//" Close 1 MsgBox "Traitement Terminé! Durée : " & Timer - start & " secondes" End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tinfos n'a bien qu'une seule colonne.
Effectivement pour faire mes tests ma colonne K n'a qu'une seule données. Ce qui , cependant, peut arriver.
effectivement la colonne K n'a qu'une donnée dans mon test, mais cela peut arriver.
1 à l'infini à compter de la ligne 2.
J'ai mis mon code complet dans la conversation. Merci pour ton aide.
Merci pour ton aide.
et pas