Vérification de Macro

  • Initiateur de la discussion Michel
  • Date de début
M

Michel

Guest
Bonjour à Tous.
Je viens de finir cette Macro, c'est ma première. elle fonctionne. Par contre pvez vous me dire si elle est bien écrite et si on ne peut pas faire mieux.

Par avance merci..
Michel



tota = Application.InputBox(prompt:='Veuillez saisir le numéro de la ligne ou vous voulez insérer ce module', Type:=1)
mavariable = tota
On Error GoTo erreur
Range('module1').Select
If IsEmpty(Range('B' & mavariable)) Then
If IsEmpty(Range('B' & mavariable + 1)) Then
If IsEmpty(Range('B' & mavariable + 2)) Then
Selection.Cut Destination:=Range('B' & mavariable)
Range('a' & mavariable).Select
Else: Range('a64').Select
MsgBox 'Vous avez sélectionné une cellule non vide '
Range('a' & mavariable).Select
End If
Else: Range('a64').Select
MsgBox 'Vous avez sélectionné une cellule non vide '
Range('a' & mavariable).Select
End If
Else: Range('a64').Select
MsgBox 'Vous avez sélectionné une cellule non vide '
Range('a' & mavariable).Select
End If
erreur: Range('a64').Select
End Sub
 

sylv900

XLDnaute Occasionnel
salut
tu est sure que ca fonctionne,
généralement mes boucles if je les écrit du type :
if évènement then
une action
elseif un autre évenement
une action
else (revient à sinon)
une action
end if

je n'emile pas les if then les uns à la suite des autre
mais je ne suis pas spécialiste, je peux me tromper...
 
M

Michel

Guest
RE RE
Voici 3 macros à la suite ....
Car je comprends pas tout 'en appelant le même module de traitement'
a+
Michel


tota = Application.InputBox(prompt:='Veuillez saisir le numéro de la ligne ou vous voulez insérer ce module', Type:=1)
mavariable = tota
On Error GoTo erreur
Range('module1').Select
If IsEmpty(Range('B' & mavariable)) Then
If IsEmpty(Range('B' & mavariable + 1)) Then
If IsEmpty(Range('B' & mavariable + 2)) Then
Selection.Cut Destination:=Range('B' & mavariable)
Range('a' & mavariable).Select
Else: Range('a64').Select
MsgBox 'Vous avez sélectionné une cellule non vide '
Range('a' & mavariable).Select
End If
Else: Range('a64').Select
MsgBox 'Vous avez sélectionné une cellule non vide '
Range('a' & mavariable).Select
End If
Else: Range('a64').Select
MsgBox 'Vous avez sélectionné une cellule non vide '
Range('a' & mavariable).Select
End If
erreur: Range('a64').Select
End Sub
Sub imp2()
'
' imp2 Macro
' Macro enregistrée le 20/04/2005 par Illouz
'

'
Range('module1').Select
Selection.Cut Destination:=Range('a401')
Range('a64').Select
End Sub
Sub imp3()
'
' imp1 Macro
' Macro enregistrée le 20/04/2005 par Illouz
'

'
tota = Application.InputBox(prompt:='Veuillez saisir le numéro de la ligne ou vous voulez insérer ce module', Type:=1)
mavariable = tota
On Error GoTo erreur
Range('module2').Select
If IsEmpty(Range('B' & mavariable)) Then
If IsEmpty(Range('B' & mavariable + 1)) Then
If IsEmpty(Range('B' & mavariable + 2)) Then
Selection.Cut Destination:=Range('B' & mavariable)
Range('a' & mavariable).Select
Else: Range('a64').Select
MsgBox 'Vous avez sélectionné une cellule non vide '
Range('a' & mavariable).Select
End If
Else: Range('a64').Select
MsgBox 'Vous avez sélectionné une cellule non vide '
Range('a' & mavariable).Select
End If
Else: Range('a64').Select
MsgBox 'Vous avez sélectionné une cellule non vide '
Range('a' & mavariable).Select
End If
erreur: Range('a64').Select
End Sub
Sub imp4()
'
' imp2 Macro
' Macro enregistrée le 20/04/2005 par Illouz
'

'
Range('module2').Select
Selection.Cut Destination:=Range('a405')
Range('a64').Select
End Sub
Sub imp5()
'
' imp1 Macro
' Macro enregistrée le 20/04/2005 par Illouz
'

'
tota = Application.InputBox(prompt:='Veuillez saisir le numéro de la ligne ou vous voulez insérer ce module', Type:=1)
mavariable = tota
On Error GoTo erreur
Range('module3').Select
If IsEmpty(Range('B' & mavariable)) Then
If IsEmpty(Range('B' & mavariable + 1)) Then
If IsEmpty(Range('B' & mavariable + 2)) Then
Selection.Cut Destination:=Range('B' & mavariable)
Range('a' & mavariable).Select
Else: Range('a64').Select
MsgBox 'Vous avez sélectionné une cellule non vide '
Range('a' & mavariable).Select
End If
Else: Range('a64').Select
MsgBox 'Vous avez sélectionné une cellule non vide '
Range('a' & mavariable).Select
End If
Else: Range('a64').Select
MsgBox 'Vous avez sélectionné une cellule non vide '
Range('a' & mavariable).Select
End If
erreur: Range('a64').Select
End Sub
Sub imp6()
'
' imp2 Macro
' Macro enregistrée le 20/04/2005 par Illouz
'

'
Range('module3').Select
Selection.Cut Destination:=Range('a409')
Range('a64').Select
End Sub
 

sylv900

XLDnaute Occasionnel
toute cette partie :
Range('module2').Select
If IsEmpty(Range('B' & mavariable)) Then
If IsEmpty(Range('B' & mavariable + 1)) Then
If IsEmpty(Range('B' & mavariable + 2)) Then
Selection.Cut Destination:=Range('B' & mavariable)
Range('a' & mavariable).Select
Else: Range('a64').Select
MsgBox 'Vous avez sélectionné une cellule non vide '
Range('a' & mavariable).Select
End If
Else: Range('a64').Select
MsgBox 'Vous avez sélectionné une cellule non vide '
Range('a' & mavariable).Select
End If
Else: Range('a64').Select
MsgBox 'Vous avez sélectionné une cellule non vide '
Range('a' & mavariable).Select
End If
erreur: Range('a64').Select
End Sub
Sub imp4()
'
est strictement identique dans toute tes macros!
il suffit de placer cette parti dans un module (dans vba project, clic droit sur modul, nouveau) avec un nom de fonction.
dans chaque macro tu appels cette fonction au lieu de retaper tout le code
tu as pigé?
je n'ai pas la syntaxe en tête et pas d'exemple sur moi pour appelé la fonction,
si quelqu'un peut t'aider sur ce point ca serait cool!
 

sylv900

XLDnaute Occasionnel
la seule variable à fournir lors de l'appel de la fonction sera le nom de ta feuille
c'est un truc du genre
syntaxe d'appel fonction (module1)

et dans ton module tu met 'module' en variable
c'est elle qui doit prendre les valeurs module1, module2 etc


mais il faudrait que quelqu'un nous aide pour la syntaxe

à l'aide, help
 

Creepy

XLDnaute Accro
Hello all,

Voici des petites corrections sur ta macro :


Dim Tota As Variant
Tota = Application.InputBox(prompt:='Veuillez saisir le numéro de la ligne ou vous voulez insérer ce module', Type:=1)
On Error GoTo Erreur
Range('module2').Select
   
If IsEmpty(Range('B' & Tota)) And IsEmpty(Range('B' & Tota + 1)) And IsEmpty(Range('B' & Tota + 2)) Then
          Selection.Cut Destination:=Range('B' & Tota)
          Range('a' & Tota).Select
         
Else
          Range('a64').Select
          MsgBox 'Vous avez sélectionné une cellule non vide '
          Range('a' & Tota).Select
         
End If
Exit Sub
Erreur:
Range('a64').Select
End Sub

Quelques petites explication sur les modifications que j'ai faites :

1 - Il faut toujours déclarer les variables, cela t'evitera parfois bien des soucis.

2 - J'ai viré la variable 'mavariable' parce que si tu fais mavariable=tota, autan,t utiliser directement mavariable !

3 - Ensuite plus tot que faire 3 conditions pour verifier une seule chose j'ai mis des AND (et) comme ca il faut que les 3 soient vrai pour executer l'action.

4 - J'ai mis un exit sub avant le erreur: sinon la macro ne s'arrete pas et execute la partie erreur.
Comme en faites tu ne veux executer cette partie de code que si erreur pas besoin de la faire à chaque fois.

Enfin petit conseil, prend l'habitude de décaler tes lignes en fonctions de tes si, etc... tu verras quand on relit c'est beaucoup plus claire. Pour info tu idente avec la touche TAB

Voila.

Pour le reste je regarderais plus tard, mais il y a moyen de 'reduire' tout ca par l'utilisation d'un module je pense.

++

Creepy
 

Statistiques des forums

Discussions
312 836
Messages
2 092 648
Membres
105 477
dernier inscrit
kyra