fichier test de la macro

  • Initiateur de la discussion Initiateur de la discussion TYPX
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

TYPX

Guest
Sub CYCLECONTROLE2()

If Sheets('CONTROLE2').Range('W1').Value = ('DETERS_1/1') Then
Sheets('CONTROLE2').Select
Range('A1:AO1').Select

Selection.Cut

Sheets('CONTROLE2').Select
L = Sheets('CONTROLE2').Range('A150').End(xlUp).ROW + 1
Sheets('CONTROLE2').Range('A' & L).Select
ActiveSheet.Paste
Sheets('CONTROLE2').Select
Range('A1').Select

Sheets('CONTROLE2').Rows(ListIndex + 1).Delete


Call CYCLECONTROLE2
Else: Sheets('CONTROLE2').Select
If Sheets('CONTROLE2').Range('A1').Value = Sheets('CONTROLE2').Range('A2').Value Then 'NOM
Else: MsgBox 'NOM '
Call ERREUR2
Exit Sub
End If

If Sheets('CONTROLE2').Range('B1').Value = Sheets('CONTROLE2').Range('B2').Value Then 'PRENOM
Else: MsgBox 'ERREUR DATE DE NAISSANCE '
Call ERREUR2
Exit Sub
End If


If Sheets('CONTROLE2').Range('D1').Value = Sheets('CONTROLE2').Range('D2').Value Then 'DATE DE NAISSANCE
Else: MsgBox 'ERREUR DATE DE NAISSANCE '
Call ERREUR2
Exit Sub
End If



If Sheets('CONTROLE2').Range('N1').Value = Sheets('CONTROLE2').Range('N2').Value Then 'GROUPE
Else: MsgBox 'ERREUR GROUPE '
Call ERREUR2
Exit Sub
End If

If Sheets('CONTROLE2').Range('O1').Value = Sheets('CONTROLE2').Range('O2').Value Then 'D
Else: MsgBox 'ERREUR D '
Call ERREUR2
Exit Sub
End If

If Sheets('CONTROLE2').Range('R1').Value = Sheets('CONTROLE2').Range('R2').Value Then 'PHENOTYPE
Else: MsgBox 'ERREUR PHENOTYPE '
Call ERREUR2
Exit Sub
End If

If Sheets('CONTROLE2').Range('P1').Value = Sheets('CONTROLE2').Range('P2').Value Then 'KELL
Else: MsgBox 'ERREUR KELL '
Call ERREUR2
Exit Sub
End If


Sheets('CONTROLE2').Select
Range('A1:AO2').Select

Selection.Cut

Sheets('CONTROLE2').Select
L = Sheets('CONTROLE2').Range('A150').End(xlUp).ROW + 1
Sheets('CONTROLE2').Range('A' & L).Select
ActiveSheet.Paste
Sheets('CONTROLE2').Select
Range('A1').Select

Sheets('CONTROLE2').Rows(ListIndex + 1).Delete
Sheets('CONTROLE2').Rows(ListIndex + 1).Delete

If Sheets('CONTROLE2').Range('AO1').Value = ('S') Then
Dim TEMP As String
TEMP = MsgBox('CONTRÔLE DETERMINATIONS OK', vbOKOnly + vbDefaultButton1 + vbInformation, 'CONTROLE OK')
TEMP = MsgBox('VOULEZ VOUS LANCER L'EDITION', vbYesNo + vbDefaultButton1 + vbExclamation, 'EDITIONS DES CARTES')
If TEMP = vbYes Then
MultiPage1.Value = 0
Call EDITION
Else: MultiPage1.Value = 0
Exit Sub
End If

Exit Sub
Else: Call CYCLECONTROLE2
End If


End If










End Sub
 
Bonsoir

Un exemple de modification du temps d'éxécution d'une macro

Lien supprimé

Dans un premier définir toutes les variables utlisées dans le programme.
Mettre en haut du modue
Option Explicit
puis débogage
compiler
la machine va indiquer les variables qui ne sont pas déclarées
Dim L As Long, ListIndex As Long
................................

Message édité par: jp14, à: 28/02/2006 17:36

Message édité par: jp14, à: 28/02/2006 17:45
 
Ce n'est pas moi qu'il faut remercier, mais ce Forum, car j'ai glané cette info comme bien d'autre ici.
Loin d'être spécialiste, il me semble que ton code devrait être retravaillé comme tes appels à

Sheets('CONTROLE2').Select
Range('A1:AO1').Select
Selection.Cut
Sheets('CONTROLE2').Select

Il me semble sauf grossière erreur de ma part que tu es tjrs dans ('CONTROLE2').
Aussi pourquoi la sélectionner une deuxième fois
Bonne soirée et bon courage.
 
Bonsoir,

Typx, voici une début de ta macro à modifier
Code:
Sub CYCLECONTROLE2()
Application.ScreenUpdating = False
With Sheets('CONTROLE2')
If .Range('W1').Value = ('DETERS_1/1') Then
Range('A1:AO1').Cut
L = .Range('A150').End(xlUp).Row + 1
    .Range('A' & L).Select
ActiveSheet.Paste
    .Range('A1').Select
    .Rows(ListIndex + 1).Delete
End If
'...le reste de ta macro...
End With
Application.ScreenUpdating = True
End Sub

Il y a encore pas mal de chose derrière à changer.

Je reviens plus tard.

😉
 
Salut TYPX, Marc, Dan,

Juste une petite précision histoire d'alléger ton code.
Lorsque tu as sélectionné une feuille, tu n'as plus besoin d'y faire référence. Tu le fais une fois en début de code (histoire d'être sur d'y être) et ensuite tu jongles avec les Ranges sans avoir à re Selectionner la feuille.
Par exemple
Code:
Feuil1.select
Range('A2')=10
Range('toto')='l'histoire de toto'

Précision: si tu peux éviter des Select dans ton code celui-ci ne s'en comportera que mieux et il ira beaucoup plus vite.

Bon courage
 
Re à tous,

A la relecture de ton code, j'ai vu que tu faisais bon nombre de test d'erreur. Tu peux modifier ton code en utilisant la gestion des erreurs (On Error Goto) et déclarer tes types d'erreurs à toi dans des constantes:
Code:
'en entête de module
Const ERR_PHENOTYPE As Long = 51000
Const ERR_D As Long = 51001
'etc...
Ensuite dans ta procédure tu y mets:
Code:
On Error Goto GestionErreur
'(le début de ton code)
If Range('N1')=Range('N2') Then Error(ERR_PHENOTYPE)
If Range('O1')=Range('O2) Then Error(ERR_D)
'(...ton code)
GestionErreur:
Select Case Err.Number
   Case ERR_PHENOTYPE
      MsgBox 'ERREUR PHENOTYPE'
   Case ERR_D
      MsgBox 'ERREUR D'
End Select
Err.Clear
Call ERREUR2
End Sub

Tu noteras au passage que cela simplifie la gestion des Exit Sub, Else...

Bon courage
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
9
Affichages
385
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour