Je me tourne vers vous pour un problème un peu bizarre. Je traduis certains termes de la base de données pour une vente a l'internationale.
Comme il y a peu de vocabulaire pour la partie technique, c'est assez pratique.
Voici le code (j'ai raccourci, il y a une trentaine de termes et le problème n'est pas la) :
Code:
Sub サイズ翻訳()
Dim c As Range
Application.ScreenUpdating = False
For Each c In ActiveSheet().UsedRange.Columns(2)
c.Value = Replace(c.Value, "ウエスト", "Waist")
c.Value = Replace(c.Value, "胴幅", "Jacket waist")
Next c
Application.ScreenUpdating = True
MsgBox "OK!"
End Sub
Ce qui est bizarre c'est aue ca marche bien SANS le ".Columns(2)", c'est donc lui qui génère l'erreur.
Par contre, en faisant un test de coloriage ActiveSheet().UsedRange.Interior.Color = RGB(200, 200, 200) ou ActiveSheet().UsedRange.Columns(2).Interior.Color = RGB(200, 200, 200), je n'ai aucun soucis (les zone grisées sont correct)
Donc ma question est simple : pourquoi une erreur sur une range plus restreinte ???
Je me permets une autre question car je ne trouve aucune de façon de faire (erreur 1004) : est-il possible de faire des if/then/else dans un each/next ? Genre :
Code:
if c.Value <> "" then c.Offset(0, 1).Value = c.Value & "-" & c.Offset(0, -1) else c.Offset(0, 1).Value = c.Offset(0, -1)
J'ai du remplacer par 2 lignes pour faire l’opération :
Mais j'aimerais comprendre pourquoi ca ne marche pas avec .columns(2) qui reste valable avec pas mal d'autres fonctions... Si quelqu'un a une explication, merci m(_ _)m
Lorsque tu écris For Each c In ActiveSheet().UsedRange.Columns(2)
la variable c représente la totalité de la plage utilisée dans la colonne 2.
Cela explique que l'instruction s'exécute correctement pour un remplissage de cellules mais pas pour un traitement spécifique de chaque cellule de la plage considérée.
Re : [RESOLU] Erreur13 dans une boucle Each en VBA
Bonjour.
On peut toujours ajouter .Cells derrière pour retransformer en ensemble de cellules indépendantes des Range représentant des parties de colonnes entières ou de lignes entières.
Au contraire pour avoir une plage par lignes ou colonnes complètes on peut ajouter .Rows ou .Columns
Il est curieux qu'aucune propriété ne permette de savoir si une expression Range représente un ensemble de lignes, de colonnes, ou de cellules.
C'est peut être parce que les 3 nuances sont toujours interchangeables de façon transparente dans tous les autres contextes que leurs explorations par For Each In.