VB Boucle de MID

Bonjour,

J'ai du louper quelque chose sur mon code, mais je ne vois pas quoi.

Dim Z As Integer

Z = Application.WorksheetFunction.CountA(Range("B:B"))

MsgBox Z

Range("A1").Select

Dim X As Integer

Application.ScreenUpdating = False

For X = 1 To Z

ActiveCell.FormulaR1C1 = "=MID(RC[1],3,1)"

Next X

Je dois appliquer la fonction mid sur toutes les lignes non vide.

Je sais que ma variable Z fonctionne puisque la MSGBOX me renvoie le nombre de ligne.

Ma fonction MID fonctionne également mais uniquement sur la cellule A1.

MErci pour votre aide

Fabine

Bonjour,

Il faut lire ce que tu écris ! Tu n'affectes que la cellule active, qui est alors A1 et le reste...

Sub Code()
    Dim i As Integer
    Application.ScreenUpdating = False
    With ActiveSheet
        For i = 1 To .Range("B" & .Rows.Count).End(xlUp).Row
            .Cells(i, 1).FormulaR1C1 = "=MID(RC[1],3,1)"
        Next i
    End With
End Sub

NB- Les déclarations de variables se placent toujours en tête de procédure. Tout Select est à proscrire dans un code qui se respecte.

Utiliser VBA pour insérer des formules (ce qui est toujours plus rapide manuellement) est une mauvaise utilisation de VBA.

On met toujours le code sous balises Code dans un post, pour qu'il soit plus lisible.

Sur ce, cordialement.

Bonjour

Essaie comme ça :

Sub Ess()
    Dim Z As Integer
     Z = Application.WorksheetFunction.CountA(Range("B:B"))
     Dim X As Integer
     Application.ScreenUpdating = False
     For X = 1 To Z
       Range("A" & X).FormulaR1C1 = "=MID(RC[1],3,1)"
     Next X
End Sub

Bye :

PS :

Oh ! pardon !

J'avais pas vu que c'était trop tard.

Bonjour MFerrand !

Bye !

Merci beaucoup.

Effectivement, il manquait quelque chose.... Je ne devais pas être assez réveillé

C'est tout bon pour moi

Rechercher des sujets similaires à "boucle mid"