Boucle sur colonnes non contigües

Bonjour à tous,

Je suis bloqué par un problème sûrement évident (mais que je ne parviens pas à résoudre) :

Je teste des cellules situées dans 3 colonnes, dont 2 non contigües (I, J, L) pour vérifier que les caractères soient bien pris en compte comme des nombres et pas du texte.

Ma procédure actuelle le fait pour une colonne (col I), mais j'ai les mêmes contrôles à effectuer pour les colonnes J et L et j'en aurai sûrement d'autres par la suite.

Voici ce que j'ai tenté sans succès :

Sub LettresEnChiffres()
'Procédure corrigeant les éventuelles erreurs de saisie dans les chiffres
'qui seraient considérés comme du texte
'Corrige aussi les écarts entre les chiffres (ex 1 000 pour 1000)
Dim FD, Tb, sCol As Variant
Dim NumLigneArv, DerLigne, i, j As Long
Dim NumLigneDep As Integer
Const LDEB = "13"
Const COL1 = "I"
Const COL2 = "J"
Const COL3 = "L"

Set FD = Worksheets("Donnees_SINP")

'******Tentative de boucle sur les 3 colonnes******
sCol = Array(9, 10, 12)
For j = LBound(sCol) To UBound(sCol)
'************

DerLigne = FD.Range("C999999").End(xlUp).Row
Set plageFT = FD.Range(j & LDEB & ":" & j & DerLigne)
plageFT.Select
'Set plageFT = FD.Range(j & LDEB & ":" & j & DerLigne)
plageFT.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
plageFT.NumberFormat = "0"
Tb = FD.Range(COL1 & LDEB & ":" & COL1 & DerLigne)

For i = LBound(Tb, 1) To UBound(Tb, 1)
    If Tb(i, 1) > 0 Then
        Tb(i, 1) = CLng(Tb(i, 1))
    End If
    If Tb(i, 1) = 0 And Tb(i, 1) <> "" Then
        Tb(i, 1) = ""
    End If
Next
Range("I13").Resize(UBound(Tb, 1), 1) = Tb

Next j

End Sub

Merci d'avance pour l'aide et les explications que vous pourrez m'apporter

Dan

Bonjour Dan,

que vaut la variable COL1 ?

Désolé, j'ai fait un peu de nettoyage dans la procédure avant de la poster et j'avais supprimé ces données.

J'ai affecté en constantes COL1, COL2 et COL3 aux colonnes I, J, L (remis dans la macro).

re,

est ce que l'adresse de la plage plageFT devrait être "I13:Ix" au 1er tour de la boucle ?

Set plageFT = FD.Range(j & LDEB & ":" & j & DerLigne)

re,

à tester,

Set plageFT = FD.Range(Cells(LDEB, sCol(j)), Cells(DerLigne, sCol(j)))

En fait ce qui ne fonctionne pas c'est :

sCol = Array(9, 10, 12)

For j = LBound(sCol) To UBound(sCol)

j équivaut à 0

est ce que l'adresse de la plage plageFT devrait être "I13:Ix" au 1er tour de la boucle ? -> Oui, tout à fait

re,

as-tu essayé ?

Set plageFT = FD.Range(Cells(LDEB, sCol(j)), Cells(DerLigne, sCol(j)))

Bonjour et merci.

Je viens d'essayer et ça fonctionne. Je ne pensais pas que le problème pouvait venir de là.

Merci beaucoup pour l'aide apportée et la résolution du problème.

Bien cordialement

Dan

Rechercher des sujets similaires à "boucle colonnes contig"