vba (débutant)

Le
Michel (pen ar bed)
Bonjour,

Pourquoi avec le code suivant la colonne 5 reste désespérément vide

Dim cel As Range
For Each cel In ActiveSheet.UsedRange.Columns(5)
ActiveCell = Left(ActiveCell, 3)
Next cel

Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #5227921
Ton code se lit comme suit :

'Déclation d'un objet de classe "Range"
Dim cel As Range

'Pour chacune (Cell-> ta variable) des cellules de la plage des cellules de la colonne 5
For Each cel In ActiveSheet.UsedRange.Columns(5).Cells
'Chacune des cellules = Gauche(chacuneDesCellules,3)
Cell.value = Left(Cell, 3)
Next cel
MichDenis
Le #5227911
Et c'est une excellente initiative de désactiver les procédures événementielles
le temps que dure la boucle :

Application.EnableEvents = False
For Each cel In ActiveSheet.UsedRange.Columns(5).Cells
Cell.value = Left(Cell, 3)
Next cel

Application.EnableEvents = True




"MichDenis"

Ton code se lit comme suit :

'Déclation d'un objet de classe "Range"
Dim cel As Range

'Pour chacune (Cell-> ta variable) des cellules de la plage des cellules de la colonne 5
For Each cel In ActiveSheet.UsedRange.Columns(5).Cells
'Chacune des cellules = Gauche(chacuneDesCellules,3)
Cell.value = Left(Cell, 3)
Next cel
Michel (pen ar bed)
Le #5227901
MichDenis avait énoncé :
Et c'est une excellente initiative de désactiver les procédures
événementielles le temps que dure la boucle :

Application.EnableEvents = False
For Each cel In ActiveSheet.UsedRange.Columns(5).Cells
Cell.value = Left(Cell, 3)
Next cel

Application.EnableEvents = True




"MichDenis"

Ton code se lit comme suit :

'Déclation d'un objet de classe "Range"
Dim cel As Range

'Pour chacune (Cell-> ta variable) des cellules de la plage des cellules de
la colonne 5 For Each cel In ActiveSheet.UsedRange.Columns(5).Cells
'Chacune des cellules = Gauche(chacuneDesCellules,3)
Cell.value = Left(Cell, 3)
Next cel


merci pour les réponses mais je galère toujours ..... (pas doué)

ce que je cherche à faire c'est de prendre les trois premiers
caractères
du texte contenue dans chaque cellule de la colonne A et de les
recopier dans la colonne D
(je ne connais pas à l'avance le nombres de lignes dans la colonne A)

M.

Frédéric Sigonneau
Le #5227781
Essaye ce genre de code :

Sub test()
Dim i&, tmp
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
tmp = Cells(i, "a").Value
If tmp <> "" Then Cells(i, "d").Value = Left(tmp, 3)
Next i
End Sub

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

MichDenis avait énoncé :
Et c'est une excellente initiative de désactiver les procédures
événementielles le temps que dure la boucle :

Application.EnableEvents = False
For Each cel In ActiveSheet.UsedRange.Columns(5).Cells
Cell.value = Left(Cell, 3)
Next cel

Application.EnableEvents = True




"MichDenis"

Ton code se lit comme suit :

'Déclation d'un objet de classe "Range"
Dim cel As Range

'Pour chacune (Cell-> ta variable) des cellules de la plage des
cellules de la colonne 5 For Each cel In
ActiveSheet.UsedRange.Columns(5).Cells
'Chacune des cellules = Gauche(chacuneDesCellules,3)
Cell.value = Left(Cell, 3)
Next cel


merci pour les réponses mais je galère toujours ..... (pas doué)

ce que je cherche à faire c'est de prendre les trois premiers caractères
du texte contenue dans chaque cellule de la colonne A et de les recopier
dans la colonne D
(je ne connais pas à l'avance le nombres de lignes dans la colonne A)

M.





Frédéric Sigonneau
Le #5227771
Ou, pour une lecture un poil plus claire :

Sub test()
Dim i&, tmp
For i = 1 To Cells(Rows.Count, "a").End(xlUp).Row
tmp = Cells(i, "a").Value
If tmp <> "" Then Cells(i, "d").Value = Left(tmp, 3)
Next i
End Sub

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

MichDenis avait énoncé :
Et c'est une excellente initiative de désactiver les procédures
événementielles le temps que dure la boucle :

Application.EnableEvents = False
For Each cel In ActiveSheet.UsedRange.Columns(5).Cells
Cell.value = Left(Cell, 3)
Next cel

Application.EnableEvents = True




"MichDenis"

Ton code se lit comme suit :

'Déclation d'un objet de classe "Range"
Dim cel As Range

'Pour chacune (Cell-> ta variable) des cellules de la plage des
cellules de la colonne 5 For Each cel In
ActiveSheet.UsedRange.Columns(5).Cells
'Chacune des cellules = Gauche(chacuneDesCellules,3)
Cell.value = Left(Cell, 3)
Next cel


merci pour les réponses mais je galère toujours ..... (pas doué)

ce que je cherche à faire c'est de prendre les trois premiers caractères
du texte contenue dans chaque cellule de la colonne A et de les recopier
dans la colonne D
(je ne connais pas à l'avance le nombres de lignes dans la colonne A)

M.





Frédéric Sigonneau
Le #5227751
Autre approche, sans boucle :

Sub test2()
Dim i&
i = Cells(Rows.Count, "a").End(xlUp).Row
With Range("D1:D" & i)
.Formula = "=Left(A1, 3)"
.Value = .Value
End With
End Sub

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

MichDenis avait énoncé :
Et c'est une excellente initiative de désactiver les procédures
événementielles le temps que dure la boucle :

Application.EnableEvents = False
For Each cel In ActiveSheet.UsedRange.Columns(5).Cells
Cell.value = Left(Cell, 3)
Next cel

Application.EnableEvents = True




"MichDenis"

Ton code se lit comme suit :

'Déclation d'un objet de classe "Range"
Dim cel As Range

'Pour chacune (Cell-> ta variable) des cellules de la plage des
cellules de la colonne 5 For Each cel In
ActiveSheet.UsedRange.Columns(5).Cells
'Chacune des cellules = Gauche(chacuneDesCellules,3)
Cell.value = Left(Cell, 3)
Next cel


merci pour les réponses mais je galère toujours ..... (pas doué)

ce que je cherche à faire c'est de prendre les trois premiers caractères
du texte contenue dans chaque cellule de la colonne A et de les recopier
dans la colonne D
(je ne connais pas à l'avance le nombres de lignes dans la colonne A)

M.





Michel (pen ar bed)
Le #5227481
Il se trouve que Frédéric Sigonneau a formulé :
Ou, pour une lecture un poil plus claire :

Sub test()
Dim i&, tmp
For i = 1 To Cells(Rows.Count, "a").End(xlUp).Row
tmp = Cells(i, "a").Value
If tmp <> "" Then Cells(i, "d").Value = Left(tmp, 3)
Next i
End Sub

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr


Merci c'est impeccable


Publicité
Poster une réponse
Anonyme