Microsoft 365 problème macro trim

Keiko

XLDnaute Occasionnel
Bonsoir tout le monde,

j'ai une macro qui fonctionne bien sur ma première ligne mais ne prends pas en compte les lignes suivantes.
Pouvez-vous m'aider?

VB:
Sub ESPACES()
Sheets("L").Select
Dim x1 As Range
For Each x1 In Range("D14:D21")
Range("g14:g21").Select
Range("d25:d26").Select
Range("d28").Select
Range("d29").Select
Range("d31:d38").Select
Range("g25:g36").Select
Range("G38").Select
Range("d42:d46").Select
Range("E42:E46").Select
Range("g42:g44").Select
Range("H42").Select
Range("g45").Select
Range("g46").Select
Range("F51").Select
Range("b51:c51").Select
Range("F52").Select
Range("b52:c52").Select
Range("b55:c55").Select
Range("e55").Select
Range("b56:C56").Select
Range("E56").Select
Range("B59:C59").Select
Range("F59").Select
Range("B60:C60").Select
Range("F60").Select
Range("B63:D63").Select
Range("h63").Select
Range("B64:D64").Select
Range("h64").Select
Range("d77").Select
Range("d78:D83").Select
Range("d96:d99").Select
Range("D103").Select
Range("D106:D108").Select
Range("D111:D113").Select
Range("D117").Select
Range("D120").Select
Range("D123").Select
Range("d146").Select
Range("d149:d151").Select
Range("d154:d156").Select
Range("D160").Select
Range("D163").Select
Range("D166").Select
Range("F77").Select
Range("F78:F83").Select
Range("F96:F99").Select
Range("F103").Select
Range("F106:F108").Select
Range("F111:f113").Select
Range("F117").Select
Range("F120").Select
Range("F123").Select
Range("F146").Select
Range("F149:F151").Select
Range("F154:F156").Select
Range("F160").Select
Range("F163").Select
Range("F166").Select
Range("H77").Select
Range("H78:H83").Select
Range("H96:H99").Select
Range("H103").Select
Range("H106:H108").Select
Range("H111:H113").Select
Range("H117").Select
Range("H120").Select
Range("H123").Select
Range("H146").Select
Range("H149:H151").Select
Range("H154:H156").Select
Range("H160").Select
Range("H163").Select
Range("H166").Select
Range("D189").Select
Range("e194").Select
Range("e195").Select
Range("e196").Select
Range("F194:F196").Select
Range("d208").Select
Range("d209").Select
Range("c213:c218").Select
Range("c219:c231").Select
Range("c232:c236").Select
Range("c238").Select
Range("c239").Select
Range("d213:d236").Select
Range("g213:g224").Select
Range("h213:h224").Select
Range("g226:g230").Select
Range("g231:g232").Select
Range("h226:h232").Select
Range("d295").Select
Range("d259").Select
Range("d260").Select
Range("d262").Select
Range("d263").Select
Range("d264").Select
Range("D267").Select
Range("G259").Select
Range("G266").Select
Range("G273").Select
Range("d283:H286").Select
Range("d287:H287").Select
Range("d290:H290").Select
Range("d295").Select
Range("d301").Select
Range("d305").Select
Range("d311:H314").Select
Range("d315:H315").Select
Range("d318:H318").Select
Range("d323").Select
Range("d329").Select
Range("d333").Select
Range("d339").Select
Range("d344").Select
Range("D14").Select
    
    x1 = Application.WorksheetFunction.Trim(x1)
Next

End Sub

Merci d'avance pour votre aide.
 

Keiko

XLDnaute Occasionnel
Bonsoir @Keiko :)

Qu'est ce donc tous ces "Select" inutiles ?

Vous ne décrivez rien de ce que vous voulez faire ?

Un premier jet peut réduire votre code à :
VB:
Sub ESPACES()
Dim x As Range
   For Each x In Sheets("L").Range("D14:D21")
       x = Application.Trim(x)
   Next
End Sub
Je veux activer les autres lignes afin d'activer Trim pour les celulles, possible d'après vous?
La vous n'avez sélectionné que la première ligne mais je souhaite aussi activer les autres.
 

Keiko

XLDnaute Occasionnel
Bonsoir,
C'est un logiciel de test pour épileptique ?
Non pourquoi?
Je comprends ce que vous voulez dire mais j'ai voulu mettre sur une ligne avec les cellules que je veux traiter.
Mais la ligne est trop longue et excel ne voulait pas. De plus, si je faisais une erreur je savais pas facilement trouver l'erreur. Alors qu'en séparant ainsi je vois ou est l'erreur.
Si vous pouviez m'aider à changer le code ca serait top.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Essayez ce code :
VB:
Sub ESPACES()
Const mesZones = "d14:d21,g14:g21,d25:d26,d28,d29,d31:d38,g25:g36,g38,d42:d46,e42:e46,g42:g44,h42,g45,g46,f51,b51:c51,f52,b52:c52,b55:c55,e55,b56:c56,e56,b59:c59,f59,b60:c60,f60,b63:d63,h63,b64:d64,h64,d77,d78:d83,d96:d99,d103,d106:d108,d111:d113,d117,d120,d123,d146,d149:d151,d154:d156,d160,d163,d166,f77,f78:f83,f96:f99,f103,f106:f108,f111:f113,f117,f120,f123,f146,f149:f151,f154:f156,f160,f163,f166,h77,h78:h83,h96:h99,h103,h106:h108,h111:h113,h117,h120,h123,h146,h149:h151,h154:h156,h160,h163,h166,d189,e194,e195,e196,f194:f196,d208,d209,c213:c218,c219:c231,c232:c236,c238,c239,d213:d236,g213:g224,h213:h224,g226:g230,g231:g232,h226:h232,d295,d259,d260,d262,d263,d264,d267,g259,g266,g273,d283:h286,d287:h287,d290:h290,d295,d301,d305,d311:h314,d315:h315,d318:h318,d323,d329,d333,d339,d344,d14"
Dim zone, x As Range
   With Sheets("L")
      For Each zone In Split(mesZones, ",")
         For Each x In .Range(zone)
            x = Application.Trim(x)
         Next x
      Next zone
   End With
End Sub
 

Keiko

XLDnaute Occasionnel
Re,

Essayez ce code :
VB:
Sub ESPACES()
Const mesZones = "d14:d21,g14:g21,d25:d26,d28,d29,d31:d38,g25:g36,g38,d42:d46,e42:e46,g42:g44,h42,g45,g46,f51,b51:c51,f52,b52:c52,b55:c55,e55,b56:c56,e56,b59:c59,f59,b60:c60,f60,b63:d63,h63,b64:d64,h64,d77,d78:d83,d96:d99,d103,d106:d108,d111:d113,d117,d120,d123,d146,d149:d151,d154:d156,d160,d163,d166,f77,f78:f83,f96:f99,f103,f106:f108,f111:f113,f117,f120,f123,f146,f149:f151,f154:f156,f160,f163,f166,h77,h78:h83,h96:h99,h103,h106:h108,h111:h113,h117,h120,h123,h146,h149:h151,h154:h156,h160,h163,h166,d189,e194,e195,e196,f194:f196,d208,d209,c213:c218,c219:c231,c232:c236,c238,c239,d213:d236,g213:g224,h213:h224,g226:g230,g231:g232,h226:h232,d295,d259,d260,d262,d263,d264,d267,g259,g266,g273,d283:h286,d287:h287,d290:h290,d295,d301,d305,d311:h314,d315:h315,d318:h318,d323,d329,d333,d339,d344,d14"
Dim zone, x As Range
   With Sheets("L")
      For Each zone In Split(mesZones, ",")
         For Each x In .Range(zone)
            x = Application.Trim(x)
         Next x
      Next zone
   End With
End Sub
[/CO
[/QUOTE]
Magnifque !

Un tout grand merci !
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Une version qui :
  • coupe la longue chaine des plages en plusieurs parties pour avoir un code plus lisible (plus long mais plus manipulable)
  • qui sélectionne à la fin toutes les cellules traitées (une espèce de contrôle visuel pour voir si on a traité les cellules qu'on désirait)
edit : version v2 (19h44)
VB:
Sub ESPACES()
Dim zone, x As Range, Tous As Range
   Application.ScreenUpdating = False
   With Sheets("L")
      For Each zone In Split("d14:d21 g14:g21 d25:d26 d28 d29 d31:d38 g25:g36 g38 d42:d46 e42:e46 g42:g44 h42 g45 g46 f51 b51:c51 f52 b52:c52 b55:c55 e55")
         .Range(zone).Select
         For Each x In .Range(zone): x = Application.Trim(x): Next x
         If Tous Is Nothing Then Set Tous = .Range(zone) Else Set Tous = Union(Tous, .Range(zone))
      Next zone
      For Each zone In Split("b56:c56 e56 b59:c59 f59 b60:c60 f60 b63:d63 h63 b64:d64 h64 d77 d78:d83 d96:d99 d103 d106:d108 d111:d113 d117 d120 d123 d146")
         For Each x In .Range(zone): x = Application.Trim(x): Next x
         Set Tous = Union(Tous, .Range(zone))
      Next zone
      For Each zone In Split("d149:d151 d154:d156 d160 d163 d166 f77 f78:f83 f96:f99 f103 f106:f108 f111:f113 f117 f120 f123 f146 f149:f151 f154:f156 f160")
         For Each x In .Range(zone): x = Application.Trim(x): Next x
         Set Tous = Union(Tous, .Range(zone))
      Next zone
      For Each zone In Split("f163 f166 h77 h78:h83 h96:h99 h103 h106:h108 h111:h113 h117 h120 h123 h146 h149:h151 h154:h156 h160 h163 h166 d189 e194 e195")
         For Each x In .Range(zone): x = Application.Trim(x): Next x
         Set Tous = Union(Tous, .Range(zone))
      Next zone
      For Each zone In Split("e196 f194:f196 d208 d209 c213:c218 c219:c231 c232:c236 c238 c239 d213:d236 g213:g224 h213:h224 g226:g230 g231:g232 h226:h232")
         For Each x In .Range(zone): x = Application.Trim(x): Next x
         Set Tous = Union(Tous, .Range(zone))
      Next zone
      For Each zone In Split("d295 d259 d260 d262 d263 d264 d267 g259 g266 g273 d283:h286 d287:h287 d290:h290 d295 d301 d305 d311:h314 d315:h315 d318:h318")
         For Each x In .Range(zone): x = Application.Trim(x): Next x
         Set Tous = Union(Tous, .Range(zone))
      Next zone
      For Each zone In Split("d323 d329 d333 d339 d344 d14")
         For Each x In .Range(zone): x = Application.Trim(x): Next x
         Set Tous = Union(Tous, .Range(zone))
      Next zone
      Application.Goto Tous
   End With
End Sub
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
607

Statistiques des forums

Discussions
312 214
Messages
2 086 313
Membres
103 175
dernier inscrit
abcc