OVH Cloud OVH Cloud

Cellule (Bis)

5 réponses
Avatar
Denys
Bonjour à tous,

Voici la question que j'ai posée vendredi dernier.... Dans la macro qui suit,
Excel ne me donne que le résultat devant apparaitre dans la dernière cellule
dans toutes les cellules !!!

Voici la macro qui a pour but de convertir des dates format texte en format
date:

Sub conversion()

Dim plg As Range, Cell As Range
Dim NomFeuille As String

Ligne = Range("M65536").End(xlUp).Row

NomFeuille = "sheet1"

With Worksheets("sheet1")
Set plg = .Range("M2:M" & .Range("M65536").End(xlUp).Row)
End With

For Each Cell In plg
Cell.Offset(, 5).FormulaArray = "=DATE(LEFT($M" & Ligne &
",4),RIGHT(LEFT($M" & Ligne & ",6),2),RIGHT($M" & Ligne & ",2))"
Next Cell
End Sub

Le résultat affiché dans toutes les cellules est le suivant:
=DATE(LEFT($M328,4),RIGHT(LEFT($M328,6),2),RIGHT($M328,2))

328 étant la dernière ligne. En fait ce que je veux, c'est qu'Excel écrive
$M5 à la ligne 5, $M6 à la ligne 6, etc....

Voyez-vous ou j'ai erré??

Philippe m'a gentiment proposé ce qui suit, mais malheureusement Excel ne
veut pas me donner un autre résultat que le précédent, sauf que cette fois-ci
on dirait qu'Excel inscrit la formule dans la cellule 2 autant de fois qu'il
y a de lignes dans la plage, et que finalement la formule inscrite est celle
devant se retrouver à la ligne 328 (la dernière de la plage):

For lg = 2 To ligne
Cell.Offset(, 5).FormulaArray = "=DATE(LEFT($M" & lg & _
",4),RIGHT(LEFT($M" & lg & ",6),2),RIGHT($M" & lg & ",2))"
lg = lg + 1

Quelqu'un pourrait m'aider à me démêler?

Merci

Denys

5 réponses

Avatar
Daniel
Bonjour.
Waaa ! un accord du participe passé du verbe avoir correctement orthographié
! trop classe.
Sinon, je ne comprends rien à ton problème.
Cordialement.
Daniel
"Denys" a écrit dans le message de news:

Bonjour à tous,

Voici la question que j'ai posée vendredi dernier.... Dans la macro qui
suit,
Excel ne me donne que le résultat devant apparaitre dans la dernière
cellule
dans toutes les cellules !!!

Voici la macro qui a pour but de convertir des dates format texte en
format
date:

Sub conversion()

Dim plg As Range, Cell As Range
Dim NomFeuille As String

Ligne = Range("M65536").End(xlUp).Row

NomFeuille = "sheet1"

With Worksheets("sheet1")
Set plg = .Range("M2:M" & .Range("M65536").End(xlUp).Row)
End With

For Each Cell In plg
Cell.Offset(, 5).FormulaArray = "ÚTE(LEFT($M" & Ligne &
",4),RIGHT(LEFT($M" & Ligne & ",6),2),RIGHT($M" & Ligne & ",2))"
Next Cell
End Sub

Le résultat affiché dans toutes les cellules est le suivant:
ÚTE(LEFT($M328,4),RIGHT(LEFT($M328,6),2),RIGHT($M328,2))

328 étant la dernière ligne. En fait ce que je veux, c'est qu'Excel écrive
$M5 à la ligne 5, $M6 à la ligne 6, etc....

Voyez-vous ou j'ai erré??

Philippe m'a gentiment proposé ce qui suit, mais malheureusement Excel ne
veut pas me donner un autre résultat que le précédent, sauf que cette
fois-ci
on dirait qu'Excel inscrit la formule dans la cellule 2 autant de fois
qu'il
y a de lignes dans la plage, et que finalement la formule inscrite est
celle
devant se retrouver à la ligne 328 (la dernière de la plage):

For lg = 2 To ligne
Cell.Offset(, 5).FormulaArray = "ÚTE(LEFT($M" & lg & _
",4),RIGHT(LEFT($M" & lg & ",6),2),RIGHT($M" & lg & ",2))"
lg = lg + 1

Quelqu'un pourrait m'aider à me démêler?

Merci

Denys






Avatar
Vincnet.
Bonjour Denys,
Essaie ça (ça remplace tout ton code) :
ThisWorkbook.Worksheets("Sheet1").Range("R2:R" &
.Range("M65536").End(xlUp).Row).FormulaR1C1 =
"ÚTE(LEFT(RC[-5],4),RIGHT(LEFT(LC[-5],6),2),RIGHT(RC[-5],2))"

--
A+

V.



Bonjour à tous,

Voici la question que j'ai posée vendredi dernier.... Dans la macro qui suit,
Excel ne me donne que le résultat devant apparaitre dans la dernière cellule
dans toutes les cellules !!!

Voici la macro qui a pour but de convertir des dates format texte en format
date:

Sub conversion()

Dim plg As Range, Cell As Range
Dim NomFeuille As String

Ligne = Range("M65536").End(xlUp).Row

NomFeuille = "sheet1"

With Worksheets("sheet1")
Set plg = .Range("M2:M" & .Range("M65536").End(xlUp).Row)
End With

For Each Cell In plg
Cell.Offset(, 5).FormulaArray = "ÚTE(LEFT($M" & Ligne &
",4),RIGHT(LEFT($M" & Ligne & ",6),2),RIGHT($M" & Ligne & ",2))"
Next Cell
End Sub

Le résultat affiché dans toutes les cellules est le suivant:
ÚTE(LEFT($M328,4),RIGHT(LEFT($M328,6),2),RIGHT($M328,2))

328 étant la dernière ligne. En fait ce que je veux, c'est qu'Excel écrive
$M5 à la ligne 5, $M6 à la ligne 6, etc....

Voyez-vous ou j'ai erré??

Philippe m'a gentiment proposé ce qui suit, mais malheureusement Excel ne
veut pas me donner un autre résultat que le précédent, sauf que cette fois-ci
on dirait qu'Excel inscrit la formule dans la cellule 2 autant de fois qu'il
y a de lignes dans la plage, et que finalement la formule inscrite est celle
devant se retrouver à la ligne 328 (la dernière de la plage):

For lg = 2 To ligne
Cell.Offset(, 5).FormulaArray = "ÚTE(LEFT($M" & lg & _
",4),RIGHT(LEFT($M" & lg & ",6),2),RIGHT($M" & lg & ",2))"
lg = lg + 1

Quelqu'un pourrait m'aider à me démêler?

Merci

Denys






Avatar
Denys
Bonjour Vincnet,

Merci beaucoup. Cependant, Excel me répond "Invalid or unqualified sequence"
en surlignant .Range (le 2e) J'ai donc enlevé le point devant Range, et
ça ne fonctionne pas plus, Excel cherchant un objet.

Denys


Bonjour Denys,
Essaie ça (ça remplace tout ton code) :
ThisWorkbook.Worksheets("Sheet1").Range("R2:R" &
.Range("M65536").End(xlUp).Row).FormulaR1C1 =
"ÚTE(LEFT(RC[-5],4),RIGHT(LEFT(LC[-5],6),2),RIGHT(RC[-5],2))"

--
A+

V.



Bonjour à tous,

Voici la question que j'ai posée vendredi dernier.... Dans la macro qui suit,
Excel ne me donne que le résultat devant apparaitre dans la dernière cellule
dans toutes les cellules !!!

Voici la macro qui a pour but de convertir des dates format texte en format
date:

Sub conversion()

Dim plg As Range, Cell As Range
Dim NomFeuille As String

Ligne = Range("M65536").End(xlUp).Row

NomFeuille = "sheet1"

With Worksheets("sheet1")
Set plg = .Range("M2:M" & .Range("M65536").End(xlUp).Row)
End With

For Each Cell In plg
Cell.Offset(, 5).FormulaArray = "ÚTE(LEFT($M" & Ligne &
",4),RIGHT(LEFT($M" & Ligne & ",6),2),RIGHT($M" & Ligne & ",2))"
Next Cell
End Sub

Le résultat affiché dans toutes les cellules est le suivant:
ÚTE(LEFT($M328,4),RIGHT(LEFT($M328,6),2),RIGHT($M328,2))

328 étant la dernière ligne. En fait ce que je veux, c'est qu'Excel écrive
$M5 à la ligne 5, $M6 à la ligne 6, etc....

Voyez-vous ou j'ai erré??

Philippe m'a gentiment proposé ce qui suit, mais malheureusement Excel ne
veut pas me donner un autre résultat que le précédent, sauf que cette fois-ci
on dirait qu'Excel inscrit la formule dans la cellule 2 autant de fois qu'il
y a de lignes dans la plage, et que finalement la formule inscrite est celle
devant se retrouver à la ligne 328 (la dernière de la plage):

For lg = 2 To ligne
Cell.Offset(, 5).FormulaArray = "ÚTE(LEFT($M" & lg & _
",4),RIGHT(LEFT($M" & lg & ",6),2),RIGHT($M" & lg & ",2))"
lg = lg + 1

Quelqu'un pourrait m'aider à me démêler?

Merci

Denys








Avatar
AV
Remplace ....LEFT(LC.....
par
.....LEFT(RC

AV
Avatar
Denys
Bonjour Alain et Vincnet

Merci infiniment, maintenant tout fonctionne à merveille !!!

Bonne fin de journée

Denys


Remplace ....LEFT(LC.....
par
......LEFT(RC

AV