Lancer une macro si cellule non vide [Fermé]

Signaler
Messages postés
5
Date d'inscription
lundi 25 mars 2019
Statut
Membre
Dernière intervention
27 mars 2019
-
Messages postés
5
Date d'inscription
lundi 25 mars 2019
Statut
Membre
Dernière intervention
27 mars 2019
-
Bonjour
Je débute en macro... Je veux que en cliquant sur un bouton, les macros s'exécutent seulement si une cellule indiquée est renseignée. Mais mon code ne fonctionne pas, cela répond "manque une condition if...
Comment faire ? Par avance merci!

Sub crefeuille1()
' crefeuille1 Macro
If Range("C2") = "" Then
Sheets("Revue type").Select
Sheets("Revue type").Copy After:=Sheets(2)
Set MySheet = ActiveSheet
With MySheet
.Name = Worksheets("Trame").Range("e2")
End If
End With
End Sub
Sub crefeuille2()
'
' crefeuille2 Macro
'
If Range("C3") = "" Then
Sheets("Revue type").Select
Sheets("Revue type").Copy After:=Sheets(2)
Set MySheet = ActiveSheet
With MySheet
.Name = Worksheets("Trame").Range("e3")
End If
End With
End Sub

3 réponses

Messages postés
12575
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
7 septembre 2020
1 984
Bonsoir

1° ta macro ne s'exécute que si la cellule C2 est vide
si tu veux qu'elle ne s'exécute que lorsque C2 est remplie il faut écrire If Range("C2") <>"" Then

2° Le End if devrait se trouver après le End with

3° With n'est utile que lorsqu'il y a plusieurs instructions à appliquer à la même plage pour éviter d'avoir à répéter, ici tu n'as qu'une instruction tu peux donc simplifier en remplaçant
With MySheet
.Name = Worksheets("Trame").Range("e2")
End with
par
ActiveSheet.Name = Worksheets("Trame").Range("e2")

Cdlmnt
Via
Messages postés
5
Date d'inscription
lundi 25 mars 2019
Statut
Membre
Dernière intervention
27 mars 2019

Merci beaucoup pour ton aide ! En effet cela fonctionne beaucoup mieux maintenant... :)
J'ai donc rédigé ainsi :
Sub crefeuille1()
If Range("C2") <> "" Then
Sheets("Revue type").Select
Sheets("Revue type").Copy After:=Sheets(2)
Set MySheet = ActiveSheet
End If
ActiveSheet.Name = Worksheets("Revue Patri").Range("e2")
End Sub

En revanche lorsque je lance la macro et que la cellule C2 est vide, un espace est ajouté à la fin du nom de la feuille. Du coup si je relance la macro elle plante car le nom de feuille ne correspond plus.
As tu une solution à cela stp ?
Encore merci
David
Messages postés
16196
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
3 septembre 2020
3 020
Bonjour,

Si tu teste C2 apparement vide , tu écris une formule dans un coin de la feuille :
=estvide(C2), si elle retourne "faux" <=> C2 contient un espace
d'où ta remarque:
"un espace est ajouté à la fin du nom de la feuille"

Ton souci est donc de trouver pourquoi il y a un espace dans C2 (C2 est une formule ? si oui ,voir les antécédents)


Messages postés
5
Date d'inscription
lundi 25 mars 2019
Statut
Membre
Dernière intervention
27 mars 2019

Merci Michel, j'ai compris et fait la modif. Maintenant cela fonctionne bien !