XL 2010 [RESOLU] Erreur13 dans une boucle Each en VBA

g.milano

XLDnaute Junior
Bonjour,

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 :
Code:
        c.Offset(0, 1).Value = c.Value & "-" & c.Offset(0, -1).Value
        c.Value = Replace(c.Value, "- ", "")


Merci pour votre aide m(_ _)m
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : Erreur13 dans une boucle Each en VBA

bonjour,


c'est ActiveSheet.UsedRange seul !
sinon c'est range(1 cellule de la colonne(2) à dernière cellule non vide de cette colonne !

DernLig = Columns(2).Rows(Rows.Count).End(xlUp).Row 'd'une col(haut<bas)
 
Dernière édition:

g.milano

XLDnaute Junior
Re : Erreur13 dans une boucle Each en VBA

Merci pour votre aide, ça marche.

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
 

Roland_M

XLDnaute Barbatruc
Re : Erreur13 dans une boucle Each en VBA

re

apparemment avec For Each ça ne fonctionne pas !?
mais il y a toujours moyen de contourner, voir cet exemple:

Code:
Sub Exemple()
Dim C As Range, R$
R$ = ActiveSheet.UsedRange.Columns(2).Address
For Each C In ActiveSheet.Range(R$)
    MsgBox C.Value
Next
End Sub

pour répondre à ton autre question, oui on peut utiliser if then else dans une boucle.
 
Dernière édition:

frangy

XLDnaute Occasionnel
Re : Erreur13 dans une boucle Each en VBA

Bonjour,

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.

A+
 

g.milano

XLDnaute Junior
Re : Erreur13 dans une boucle Each en VBA

@Roland : le première solution marchait. Je voulais juste une explication.

@frangy : d'accord, on peut faire des actions range, mais pas par cellule ; ce qui explique surement l'erreur avec le if/then.

Merci a vous 2 !
 

Dranreb

XLDnaute Barbatruc
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.
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
419

Statistiques des forums

Discussions
312 102
Messages
2 085 304
Membres
102 857
dernier inscrit
Nony1931