Compter le nombre des charactères dans une plage

  • Initiateur de la discussion gaelhaj
  • Date de début
G

gaelhaj

Guest
Bonjour à tous,

Je commence à peine à me familiariser avec le VBA et à travailler avec les macros.

Bref, mon problème (pour certains d'entre vous il serait probablement assez simple à résoudre mais pour moi un Novice de VBA c'est un peut difficile) est le suivant :

comment faire à chaque fois pour importer un fichier texte quelconque (1) dans une feuille excel puis de mentionner le nombre de lignes et de caractères importés (2)?

1) pour la première phase j'ai adopté ce code :
-------------------------------------------------------------
Sub ImportTxt()
'
' ImportTxt Macro

Workbooks.OpenText Filename:='E:\\AGSERVER\\Ons\\AGSERVER\\test1.txt', Origin _
:=-536, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlNone, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
Cells.Select
selection.Copy
Windows('AGtxtImport.xls').Activate
ActiveSheet.Paste
Range('B10').Select

Windows('test1.txt').Activate
ActiveWindow.Close
Cells.EntireColumn.AutoFit

End Sub
-----------------------------------------------------------
Est-ce qu'on peut l'améliorer et comment ?

2)pour la seconde phase là où je suis bloqué :

je n'arrive pas à trouver une solution pour passer d'une cellule à l'autre et récupérer le nombre de caractères qu'elle contient puis de calculer le nombre total des caractères contenus dans toutes les cellules de la plage.

J'ai écrit ce bout de code qui permet uniquement de retourner le nombre de caractères de la 1ère cellule de la plage :
----------------------------------------------------------
Sub Currentselect()
'
' Currentselect Macro

' La première cellule suite à l'import est B10
ncelldeb = 10
ncell = selection.Count - 1
ncellfin = ncell + 10

With selection
For Each Cell In selection
For compt = ncelldeb To ncellfin
n = Range('B' & compteur).Characters.Count
Next compteur
Next Cell
Range('B6').Value = 'Votre fichier comporte ' & selection.Count & ' lignes et ' & n & ' caractères'

End With
End Sub
----------------------------------------------------------

Je pense que mon problème se situe au niveau des boucles For
mais je n'arrive pas à l'identifier et peut être dans tout le code.

Je serais reconnaissant à quiconque qui peut m'aider à résoudre ce problème et/ou me conseiller.

A bientôt et excuser moi pour ce texte qui est assez long.
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir gaelhaj, pat1545,

Ci-dessous, peut-être une solution à ton problème :
Sub ImportTxt()
Dim NbCaract As Long, NbLig As Long
Dim
Plage As Range
      Application.ScreenUpdating = False
      'Ouvre le fichier texte
      Workbooks.OpenText Filename:='E:AGSERVEROnsAGSERVERtest1.txt', Origin _
      :=-536, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlNone, _
      ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False _
      , Space:=False, Other:=False, FieldInfo:=Array(1, 2), _
      TrailingMinusNumbers:=True
      With ThisWorkbook.Sheets(1)   'A adapter le cas échéant
            'RAZ de la zone de réception
            .Range('B10:IV65536').Delete
            'Collage des données et fermeture du fichier texte
            ActiveWorkbook.Sheets(1).UsedRange.Copy Destination:=.Range('B10')
            ActiveWorkbook.Close False
            .Cells.EntireColumn.AutoFit
            'Comptage
            Set Plage = Intersect(.UsedRange, .Range('B10:IV65536'))
            NbLig = Plage.Rows.Count
            For Each c In Plage
                  NbCaract = NbCaract + Len(c.Value)
            Next c
      End With
      Application.ScreenUpdating = True
      MsgBox 'Nombre de lignes : ' & NbLig & vbLf & 'Nombre de caractères : ' & NbCaract
End Sub
Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 846
dernier inscrit
Silhabib