[Catégorie modifiée .Net --> VBA] Problème

stid59
Messages postés
22
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
25 août 2011
- 2 juil. 2010 à 17:18
stid59
Messages postés
22
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
25 août 2011
- 2 juil. 2010 à 19:50
Bonjour à tous,
J'ai extrait des données via une requête web. En colonne B j'ai les prix de ces produits. Le problème c'est que ces prix sont au format texte. J'ai donc créé une macro sur Excel qui permet de convertir les prix au format monétaire. Voici le code :
Sub Macro1()
Range("C2").Select
ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""."","","")&""€"""
Selection.AutoFill Destination:=Range("C2:C12")
Range("C2:C12").Select
Range("C1").Select
End Sub

Ce code fonctionne correctement mais le problème est que le nombre de produits extraits varie. Ce code fonctionne pour 10 produits mais demain il peut y en avoir x j'ai donc tenté de remplacé le 12 de Range("C2:C12") mais ça ne fonctionne pas et je ne sais pas pourquoi ...

Sub Macro1()
Range("C2").Select
ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""."","","")&""€"""
Selection.AutoFill Destination:=Range("C2:C" & i)
Range("C2:C" & i).Select
Range("C1").Select
End Sub

i correspond au nombre de produits :
Sub nbproduits()

Dim i As Integer
i = 2
Range("A" & i).Select
Do While Range("A" & i).Value <> ""
i = i + 1
Loop
End Sub

Savez-vous pourquoi ma Macro1 ne fonctionne pas ? L'erreur se situe à cette instruction : Selection.AutoFill Destination:=Range("C2:C" & i)

2 réponses

cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
2 juil. 2010 à 19:15
Salut
Super titre !
Super choix de catégorie de question !

"ça ne fonctionne pas" ne veut rien dire.
Si tu as une erreur (et tu dois en avoir une), il faut en parler, nous dire laquelle et sur quelle ligne.

Tu as dimensionné ta variable i à l'intérieur de ta Sub nbproduits
Elle cessera d'exister après le End Sub !
Pour qu'elle reste en mémoire, il faut que tu mettes ce Dim dans la partie déclarations de ta page de code.

Donc, quand tu exécutais Macro1, la variable i contient 0 et Range("C2:C0"), Excel ne doit pas trop apprécier.

PS : je suis un peu pète-sec, mais je suis pas méchant.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
stid59
Messages postés
22
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
25 août 2011

2 juil. 2010 à 19:50
Oui désolé pour le titre je l'avais mis avant d'écrire le message et je ne l'ai pas modifié avant de le publier.

J'avais mis Sub convformat () dans ThisWorkbook et la Macro1 était dans un Module donc je pense que ça ne fonctionnait pas à cause de ça. En mettant comme tu as dit le Dim dans la partie déclarations ça fonctionne :)

J'ai un autre soucis : lorsque je met en forme mes données, elles ne se mettent pas comme il faut. Elles se mettent de cette manière :

1
2 Produit A
3
4
5
6
7
8
9
10 Produit B
11
12
13
14
15
16
17 Produit C
...

Pour supprimer ces espaces j'ai tapé le code suivant :
Rows("3:9").Select
Selection.Delete Shift:=xlUp
Rows("4:10").Select
Selection.Delete Shift:=xlUp

J'aimerai faire une boucle pour que cette macro s'exécute quelque soit le nombre de produit. J'ai donc saisi le code suivant :

Dim i As Integer
Dim j As Integer

For j = 3 To 50
For k = 9 To 50
Rows("j:k").Select
Selection.Delete Shift:=xlUp
Next k
Next j

En exécutant la macro il y a une erreur, pourtant je ne vois pas laquelle
0