Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Reconnaître les caractères vba

goldenboy

XLDnaute Occasionnel
Bonjour à tous,

Le titre n'est pas très explicite, mais j'espère pourvoir me rattraper avec l'explication.

J'ai un fichier, qui va sur une application (travail), qui copie l'écran, retourne sur excel et me colle la copie en A1.

Jusque là tout va bien.

Seulement, il faut que je puisse déterminer sur excel quelle est la dernière ligne remplie (sa je sais faire), mais il y a un problème car ce qui est collé, contient des lignes remplies d'espace, qu'Excel considère remplies. (voir fichier joint) Il s'agit dans l'exemple des lignes 4 à 24.

Ma question est : Est ce qu'il est possible de reconnaître les lignes remplies d'espace et des supprimer ? ou dans l'autre sens, de garder les lignes qui contiennent au moins 1 caractère différent de l'espace ?

Merci d'avance pour vos réponses.
 

Pièces jointes

  • Test1.xls
    42 KB · Affichages: 37
  • Test1.xls
    42 KB · Affichages: 39
  • Test1.xls
    42 KB · Affichages: 37

Yaloo

XLDnaute Barbatruc
Re : Reconnaître les caractères vba

Bonjour goldenboy, le forum,

Avec ce code

VB:
For Each c In [A1:A30]
  c.Value = Trim(c.Value)
Next

Mais dans ce cas, cela supprime tous les espaces avant et après ton texte.

A te relire

Martial
 

Yaloo

XLDnaute Barbatruc
Re : Reconnaître les caractères vba

Re,
Salut gilbert_RGI,

Si tu veux conserver les espaces de gauche, tu peux ne supprimer que les espaces à droite.

VB:
For Each c In [A1:A30]
  c.Value = RTrim(c.Value)
Next

A+

Martial
 

job75

XLDnaute Barbatruc
Re : Reconnaître les caractères vba

Bonjour goldenboy, yaloo, gilbert_RGI,

Une solution avec le filtre avancé (élaboré) :

Code:
Sub macro1()
'Feuil1 et Feuil2 sont les CodeNames des feuilles
Dim crit As Range
Feuil2.Cells.Clear 'RAZ
With Feuil1.Range("A1", Feuil1.UsedRange)
  Set crit = .Cells(1, .Columns.Count + 1).Resize(2)
  crit(2).FormulaR1C1 = "=SUMPRODUCT(N(TRIM(RC1:RC[-1])<>""""))"
  .AdvancedFilter xlFilterInPlace, crit
  .SpecialCells(xlCellTypeVisible).EntireRow.Copy Feuil2.[A1]
  .AdvancedFilter xlFilterInPlace, ""
  crit = ""
  Feuil2.Activate 'facultatif
End With
End Sub
Les lignes du UsedRange ne contenant que des espaces ne sont pas copiées.

Fichier joint.

A+
 

Pièces jointes

  • Test(1).xls
    48.5 KB · Affichages: 35
  • Test(1).xls
    48.5 KB · Affichages: 36
  • Test(1).xls
    48.5 KB · Affichages: 31

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…