OVH Cloud OVH Cloud

Problème macro

5 réponses
Avatar
lolo
Bonjour =E0 tous

Voila j'avais une macro qui fonctionnait que voila :

Sub remplacer()

For Each c In Range("E:E")
If c.Value <> "" Then
c.Value =3D Replace(c.Value, ",", ".")
c.Value =3D Replace(c.Value, " EA", "")
c.Value =3D Replace(c.Value, " M", "")
End If
Next c
Range("A:B").EntireColumn.Delete
Range("1:3").EntireRow.Delete


End Sub

Je voudrais la modifier et rajouter cela en plus mais j'ai un probl=E8me
j'ai une erreur d'execution 1004 qui me met une lgne en jaune

Sub remplacer()
Dim str As String
str =3D ActiveWorkbook.Names("Div.").RefersTo --> LIGNE EN JAUNE ICI
ActiveWorkbook.Names("Div.").Delete
ActiveWorkbook.Names.Add "Div", str

For Each c In Range("E:E")
If c.Value <> "" Then
c.Value =3D Replace(c.Value, ",", ".")
c.Value =3D Replace(c.Value, " EA", "")
c.Value =3D Replace(c.Value, " M", "")
End If
Next c
Range("A:B").EntireColumn.Delete
Range("1:3").EntireRow.Delete
=20
End Sub

Pouvez vous m'aider ?

Merci beaucoup

A+

5 réponses

Avatar
phil
Salut
j'ai fait un bête copier coller de ton code pour voir et je n'ai aucun
problème

Dim str As String
str = ActiveWorkbook.Names("Div.").RefersTo --> LIGNE EN JAUNE ICI
ActiveWorkbook.Names("Div.").Delete
ActiveWorkbook.Names.Add "Div", str

Je penche donc pour la solution que le nom Div. n'existe pas quand tu lances
ta macro et donc ActiveWorkbook.Names("Div.").RefersTo plante ce qui est
normal
Vérifie déjà ça

@+Phil

"lolo" a écrit dans le message de news:

Bonjour à tous

Voila j'avais une macro qui fonctionnait que voila :

Sub remplacer()

For Each c In Range("E:E")
If c.Value <> "" Then
c.Value = Replace(c.Value, ",", ".")
c.Value = Replace(c.Value, " EA", "")
c.Value = Replace(c.Value, " M", "")
End If
Next c
Range("A:B").EntireColumn.Delete
Range("1:3").EntireRow.Delete


End Sub

Je voudrais la modifier et rajouter cela en plus mais j'ai un problème
j'ai une erreur d'execution 1004 qui me met une lgne en jaune

Sub remplacer()
Dim str As String
str = ActiveWorkbook.Names("Div.").RefersTo --> LIGNE EN JAUNE ICI
ActiveWorkbook.Names("Div.").Delete
ActiveWorkbook.Names.Add "Div", str

For Each c In Range("E:E")
If c.Value <> "" Then
c.Value = Replace(c.Value, ",", ".")
c.Value = Replace(c.Value, " EA", "")
c.Value = Replace(c.Value, " M", "")
End If
Next c
Range("A:B").EntireColumn.Delete
Range("1:3").EntireRow.Delete

End Sub

Pouvez vous m'aider ?

Merci beaucoup

A+
Avatar
lolo
Salut

Je viens de refaire la mani en écrivant Div. dans ma feuille excel et
en créant une nouvelle macro

J'ai toujours le message d'erreur...

Le mot Div. peut se trouver n'importe ou dans la feuille c'est bien ça
?

Merci

A+
Avatar
bret17
Salut
Non il ne faut pas écrire Div. dans une cellule ! ! !
Div. correspond à un nom (d'une cellule ou d'une plage),
c'est à dire dans ta feuille excel, tu sélectionnes les cellules qui doivent
correspondre au nom Div.
tu vas dans le menu Insertion->Nom->Définir, tu tapes Div. et clique Ok
et là ta macro doit marcher

mais ton bout de macro si tu l'as donné en entier ne sert à rien !

Dim str As String
str = ActiveWorkbook.Names("Div.").RefersTo
*** récupère dans la variable str à quoi fait référence Div. (et si le nom
Div. n'existe pas ça plante)

ActiveWorkbook.Names("Div.").Delete
*** supprime le nom Div.

ActiveWorkbook.Names.Add "Div", str
*** recrée le nom Div. avec la même plage qu'au début


Donc si il n'y a aucune action entre tes trois lignes de code, il ne sert à
rien, il récupère une plage nommée, supprime le nom et le recrée aussi sec
avec la même plage !

Pourquoi as-tu rajouté ces, qu'est-ce que tu voulais faire ?

@+Phil


"lolo" a écrit dans le message de news:

Salut

Je viens de refaire la mani en écrivant Div. dans ma feuille excel et
en créant une nouvelle macro

J'ai toujours le message d'erreur...

Le mot Div. peut se trouver n'importe ou dans la feuille c'est bien ça
?

Merci

A+
Avatar
bret17
juste un petit truc, ne fais pas attention à l'expéditeur phil et bret17
c'est pareil, ça dépend sur quelle machine je me mets au boulot !
donc je suis toujours cette conversation si tu as encore des soucis !


"bret17" a écrit dans le message de news:
44b3746d$0$23912$
Salut
Non il ne faut pas écrire Div. dans une cellule ! ! !
Div. correspond à un nom (d'une cellule ou d'une plage),
c'est à dire dans ta feuille excel, tu sélectionnes les cellules qui
doivent correspondre au nom Div.
tu vas dans le menu Insertion->Nom->Définir, tu tapes Div. et clique Ok
et là ta macro doit marcher

mais ton bout de macro si tu l'as donné en entier ne sert à rien !

Dim str As String
str = ActiveWorkbook.Names("Div.").RefersTo
*** récupère dans la variable str à quoi fait référence Div. (et si le nom
Div. n'existe pas ça plante)

ActiveWorkbook.Names("Div.").Delete
*** supprime le nom Div.

ActiveWorkbook.Names.Add "Div", str
*** recrée le nom Div. avec la même plage qu'au début


Donc si il n'y a aucune action entre tes trois lignes de code, il ne sert
à rien, il récupère une plage nommée, supprime le nom et le recrée aussi
sec avec la même plage !

Pourquoi as-tu rajouté ces, qu'est-ce que tu voulais faire ?

@+Phil


"lolo" a écrit dans le message de news:

Salut

Je viens de refaire la mani en écrivant Div. dans ma feuille excel et
en créant une nouvelle macro

J'ai toujours le message d'erreur...

Le mot Div. peut se trouver n'importe ou dans la feuille c'est bien ça
?

Merci

A+




Avatar
lolo
Salut

En fait ce que je veux faire c'est juste remplacer le mot Div. par Div
Comme je fais des extraction SAP le fichier est toujours remplacer par
un nouveau
En fait j'ai fais un bouton qui fais appel à une macro d'un autre
fichier excel car avec SAP tu peux pas envoyer des données vers des
fichiers excel qui contiennent des macros.

Je ne peux donc pas faire ce que tu m'as dis avec définir nom...

Merci de ton aide

A+