Soucis création d'une macro VBA (débutant)
Résolu
McFly
-
tompols Messages postés 1273 Date d'inscription Statut Contributeur Dernière intervention -
tompols Messages postés 1273 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'essaye de faire une macro qui remplace le contenu des cellules dans une plage de cellules données.
J'ai essayé ça:
Sub caisse_fusion()
Dim dercell
Dim cell, masel As range
Sheets("Nombre de contrat par caisse se").Activate
dercell = InputBox("numéro de la dernière cellule")
Set masel = range("A2", "A" & dercell)
For Each cell In masel
If cell.Value = 2 Then
cell.Value = "80-02-60"
Else
End
End If
Next cell
End Sub
Et ça marche (OH joie !!)
Mon soucis arrive quand je rajoute un else if cell.value = 3 (par exemple, ça aurait pu être 4 ou 50)
Là, bizarrement, vba me dit: erreur de compilation: Next sans For
et du coup, je comprends pas moi... parce que en fait c'est normal qu'il y ait pas de For ...
Sauriez vous m'aider ?
D'avance merci,
McFly
J'essaye de faire une macro qui remplace le contenu des cellules dans une plage de cellules données.
J'ai essayé ça:
Sub caisse_fusion()
Dim dercell
Dim cell, masel As range
Sheets("Nombre de contrat par caisse se").Activate
dercell = InputBox("numéro de la dernière cellule")
Set masel = range("A2", "A" & dercell)
For Each cell In masel
If cell.Value = 2 Then
cell.Value = "80-02-60"
Else
End
End If
Next cell
End Sub
Et ça marche (OH joie !!)
Mon soucis arrive quand je rajoute un else if cell.value = 3 (par exemple, ça aurait pu être 4 ou 50)
Là, bizarrement, vba me dit: erreur de compilation: Next sans For
et du coup, je comprends pas moi... parce que en fait c'est normal qu'il y ait pas de For ...
Sauriez vous m'aider ?
D'avance merci,
McFly
A voir également:
- Soucis création d'une macro VBA (débutant)
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Creation compte gmail - Guide
- Création site web - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Création compte google - Guide
4 réponses
Bonjour
=> il me smeble que tu as un end en trop !
NB : tu peux aussi utiliser select case pour tester les valeurs.....
For Each cell In masel If cell.Value = 2 Then cell.Value = "80-02-60" Else End End If Next cell
=> il me smeble que tu as un end en trop !
For Each cell In masel If cell.Value = 2 Then cell.Value = "80-02-60" Elseif cell.Value = 3 then ce que tu veux End If Next cell
NB : tu peux aussi utiliser select case pour tester les valeurs.....
Re,
Bon jsuis pas sur niveau perf, mais en, tout cas "select case" parait plus "fait pour" ce que tu veux faire...regarde dans l'aide vba mais ça ferait un truc comme ça :
un ptit lien en passant : https://www.ozgrid.com/VBA/select-case.htm
A+
Bon jsuis pas sur niveau perf, mais en, tout cas "select case" parait plus "fait pour" ce que tu veux faire...regarde dans l'aide vba mais ça ferait un truc comme ça :
For Each c In masel Select Case c.Value Case 1, 2, 3 c.Value = "1-2-3" End Select Next c
un ptit lien en passant : https://www.ozgrid.com/VBA/select-case.htm
A+
j'avais enlevé le end et ça ne fonctionait toujours pas... en fait c'est le
else
if
qui posait problème, je l'ai remplacé par ton elseif et ça fonctionne (je n'ai pas remis le end)
par contre, je n'ai pas très bien compris ce qu'est le case ?
en gros, en ce qui me concerne:
J'ai une extraction de base de donnée qui me sort un tableau avec des caisses 1,2,3 etc.
cependant, je souhaite que certaines aient le même numéro par exemple, la 1, la 2 et la 3 se sont groupées, je souhaite donc leur donner le nom "1-2-3"
Je suis donc parti dans l'idée de tester chaque cellule pour vérifier sa valeur et, si elle correspond à 1, 2 ou 3, je la remplace par "1-2-3"
tu veux dire qu'en utilisant case, ça serait plus rapide ?