[Windows XP][Excel 2003][VBA] bizarrerie de constante

phyx

XLDnaute Nouveau
[Windows XP][Excel 2003][VBA] bizarrerie de constante

Bonjours le forum,
Alors, le problème se situe dans le code.
Que je vous explique avant. J'utilise une boucle qui dit que "tant que la case
observé est différent de XXX", on continue à mettre un code sur une case de la ligne".

Cela fonctionne bien, sauf à la fin, le code ne s'arrête plus.
Je pensais pourtant avoir réglé le problème. j'ai un compteur (i=i+1) et je réviens que tant que ce compteur n'atteint pas le nombre de ligne mit dans un msgbox, on continue.

Là est le ik. Si on met le nombre, par exemple 1080, la boucle s'arrête.
Par contre, si 'on crée une constante "N°de_ligne", et que l'on met par 'intermédiaire d'un msgbox le nombre 1080. Et bien, cela ne s'arrête pas.

Autre chose étrange, la constante "N°de_ligne" fonctionne si le n°de ligne donné est inférieur au nombre de ligne, donc, si la boucle ne rentre pas dans la partie de fin sans fin.

Code:
i = 1
colJ = "J" & i
colH = "H" & i
colI = "I" & i

    Range("I1").Select
    ActiveCell.FormulaR1C1 = "=LEFT(RC[-8],8)"
    
    Range("I1").Select
    Selection.Copy

Dim N°de_ligne, machaine3
    N°de_ligne = InputBox("combien de ligne fait le fichier ?", _
    "Etablissement de la colonne de code", "ligne au total", 100, 100)
machaine3 = "I1:I" & N°de_ligne
Range(machaine3).Select
'copie les cellules visées
    ActiveSheet.Paste
    
Range(colJ).Select
N°ligne_dividé_par_dix = N°de_ligne / 10
For A = 1 To N°ligne_dividé_par_dix
Range(colI).Select
If Range(colI).Value = "XXX" Then
    Range(colH).Select
    Selection.Copy
    Range(colJ).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    i = i + 1
    colJ = "J" & i
    colH = "H" & i
    colI = "I" & i
    compteur = 0
    Do While Range(colI).Value <> "XXX" And i < 1080 'N°de_ligne
    ' Normalement Mais, ça ne marche pas .
    Range(colJ).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        i = i + 1
        colJ = "J" & i
        colH = "H" & i
        colI = "I" & i
    Loop
Else
    i = i + 1
    colJ = "J" & i
    colH = "H" & i
    colI = "I" & i
End If
Next A

    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[10],"" "",LEFT(RC[1],2))"
    Range("A1").Select
    Selection.Copy
Dim machaineA
machaineA = "A1:A" & N°de_ligne
    Range(machaineA).Select
    ActiveSheet.Paste

Dans le même ordre d'idée. J'aimerais faire une constante dans différents macros, mettons, la constante "feuille". Cette constante "feuille" est toujours la même sur plusieurs macro.
Et, initialiser cette constante avec une macro "globale" avant le lancement des autres et qui regroupe certaines des autres macros avec cette constante.
D'où, une constante Public ?? ou autre chose
et, puis je la laisser dans le sub normal, un des modules ou, est ce que je peux mettre ces constante dans le classeur. Là, c'est beaucoup plus intéressant.
 
Dernière édition:

Discussions similaires

Réponses
14
Affichages
637
Réponses
7
Affichages
317

Statistiques des forums

Discussions
312 082
Messages
2 085 171
Membres
102 805
dernier inscrit
emes