Appliquer une fonction à tout un tableau

Grojok

XLDnaute Nouveau
Bonjour!

Dans un tableau excel, il y a des caractères inconnus qui sont symbolisés par un point d'interrogation dans un losange par excel.

La fonction EPURAGE() permet de supprimer ces caractères inconnus.

J'aimerais donc appliquer cette fonction à tout mon tableau,

Est-ce possible et comment cela peut-il se faire?

En vous remerciant par avance,

Thibaut
 

pierrejean

XLDnaute Barbatruc
Re : Appliquer une fonction à tout un tableau

Re

Teste ceci

Code:
Sub epure()
x = Selection.Row
y = Selection.Column
tablo = Selection
For n = LBound(tablo, 1) To UBound(tablo, 1)
 For m = LBound(tablo, 2) To UBound(tablo, 2)
   tablo(n, m) = WorksheetFunction.Clean(tablo(n, m))
  Next m
Next n
Cells(x, y).Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
End Sub

Mais d'abord sur une centaine de cellule !!!
 

ROGER2327

XLDnaute Barbatruc
Re : Appliquer une fonction à tout un tableau

Bonjour pierrejean
Re

Tu n'aurais pas testé sur une seule cellule ?
C'est sûr ! Et Excel est pénible de ne pas être capable de considérer qu'une cellule puisse se concevoir comme un tableau de dimension 1 x 1.

Voici une proposition de développement de votre code pour régler ce problème. J'en profite pour en régler un deuxième : celui de la sélection multiple, genre "A1:A6, B3:B5, C4".
Code:
[COLOR="DarkSlateGray"][B]Sub epure()
Dim n&, m&, Tablo(), Zone As Range [COLOR="Sienna"]'typage des variables
'parce que je suis maniaque ou prudent (au choix)[/COLOR]
  With Selection
    For Each Zone In .Areas [COLOR="Sienna"]'traite la sélection zone par zone[/COLOR]
      With Zone
        Tablo = .Resize(.Rows.Count - (.Count = 1), .Columns.Count) [COLOR="Sienna"]'affecte
        'une ligne supplémentaire au tableau si la zone est constituée
        'd'une cellule unique[/COLOR]
        For n = LBound(Tablo, 1) To UBound(Tablo, 1) + (.Count = 1)
          For m = LBound(Tablo, 2) To UBound(Tablo, 2)
            Tablo(n, m) = WorksheetFunction.Clean(Tablo(n, m))
            Tablo(n, m) = m & " " & n
          Next m
        Next n
        .Value = Tablo
      End With
    Erase Tablo [COLOR="Sienna"]'facultatif[/COLOR]
    Next Zone
  End With
End Sub[/B][/COLOR]
Comme rien n'est jamais parfait, ce code présente un défaut (au moins !) : il échoue si une zone de la sélection est formée d'une seule cellule de la dernière ligne de la feuille.​
Cordialement,
ROGER2327
#4157


Vendredi 13 Absolu 138 (Saint Cantarel, l'illuminateur, SQ)
4ème Sanculottide An CCXVIII
2010-W38-1T21:20:37Z
 

pierrejean

XLDnaute Barbatruc
Re : Appliquer une fonction à tout un tableau

Bonjour ROGER

Je vous reconnais bien la , avec votre capacité a envisager tous les non dits des enoncés et autre chausse-trappes distillées par nos amis forumeurs

Une ligne de votre code me surprend un peu cependant
Code:
[B][COLOR=#2f4f4f]Tablo(n, m) = WorksheetFunction.Clean(Tablo(n, m))[/COLOR][/B]
[B][COLOR=blue]Tablo(n, m) = m & " " & n[/COLOR][/B]

Ne s'agirait-il pas d'un reste de mise au point ?

Et Merci pour m'avoir fait decouvrir le Selection.Areas

Cordialement
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Appliquer une fonction à tout un tableau

Bonjour à tous, Bonjour pierrejean
(...)
Une ligne de votre code me surprend un peu cependant
Code:
[B][COLOR=#2f4f4f]Tablo(n, m) = WorksheetFunction.Clean(Tablo(n, m))[/COLOR][/B]
[B][COLOR=blue]Tablo(n, m) = m & " " & n[/COLOR][/B]

Ne s'agirait-il pas d'un reste de mise au point ?
(...)
Bien sûr !
Cette ligne DOIT être supprimée.

(Je l'avais placée là pour m'assurer que la procédure ne traitait que les cellules visées, sans empiéter autour : une erreur d'indexation est si vite arrivée...)

Mais votre attention scrupuleuse remet les choses à leur place : je vous en remercie chaudement.​
Bonne journée.

ROGER2327
#4160


Samedi 14 Absolu 138 (Saint Sophrotatos l'Arménien, pataphysicien, SQ)
5ème Sanculottide An CCXVIII
2010-W38-2T08:55:36Z
 

Grojok

XLDnaute Nouveau
Re : Appliquer une fonction à tout un tableau

Re-bonjour,

Je reviens vers vous car j'ai beaucoup utilisé vos macros mais malheureusement, sur un de mes tableaux, elles ne marchent plus ...
Pour l'une ou l'autre formule, lorsque je lance la macro, au bout de 3secondes environ, une erreur 400 de MVB apparait ..

Je ne comprend pas ..;

Pouvez-vous m'aider encore une fois?

Merci par avance,

Thibaut
 

Discussions similaires

Statistiques des forums

Discussions
312 370
Messages
2 087 693
Membres
103 641
dernier inscrit
anouarkecita2