Incompatibilité de type sur macro

  • Initiateur de la discussion Initiateur de la discussion flo2002
  • 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 !

flo2002

XLDnaute Impliqué
Re bonjour le forum,

un petit probleme depuis que j'ai adapté une macro:

Option Explicit

Sub IsolePeople()


Application.ScreenUpdating = False
Sheets('AFU').Visible = True
Sheets('Extract_AFU').Visible = True
Sheets('AFU').Select
Sheets('Extract_AFU').Select


Dim Derligne1%, Derligne2%
Dim i1%, i2%
Dim Exist
Derligne1 = Sheets('AFU').Range('B65536').End(xlUp).Row
Derligne2 = Sheets('Extract_AFU').Range('D65536').End(xlUp).Row
For i2 = 1 To Derligne2
For i1 = 1 To Derligne1
If Sheets('Extract_AFU').Range('D' & i2) = Sheets('AFU').Range('B' & i1) Then Exist = 1
GoTo Suivant
End If
Next
If Exist = 1 Then GoTo Suivant
Sheets('AFU').Range('B' & Derligne1 + 1) = Sheets('Extract_AFU').Range('D' & i2)
Derligne1 = Sheets('AFU').Range('B65536').End(xlUp).Row
Suivant:
Exist = 0
Next

Sheets('AFU').Select
Columns('B:B').Select
Range('B300').Activate
Selection.Sort Key1:=Range('B2'), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom


Sheets('Extract_AFU').Visible = False

Sheets('AFU').Visible = False
Application.ScreenUpdating = True
Sheets('Garde').Select


End Sub

En rouge ce qui lui plait pas.

Merci d'avance!

désolé Denis comme tu peux le voir j'ai encore un bug!

Message édité par: flo2002, à: 16/05/2006 10:16
 
C'est ce que j'avais mis après correction mais le probleme reste entier.
Cependant, j'ai peut etre une piste.
Je compare des valeurs en dur sur A
mais sur B ce sont des valeurs qui viennent d'un indirect.
Le probleme n'est il pas la?
 
Bonjour à tous,

juste une question en passant : on m'a toujours dit d'éviter comme la peste les 'goto'. est-ce que le code suivant ne fait pas la même chose de façon un peu plus propre (pardon si je me trompe)
Code:
For i2 = 1 To Derligne2

    For i1 = 1 To Derligne1
        If Sheets('Extract_AFU').Range('D' & i2) = Sheets('AFU').Range('B' & i1) Then
            Exist = 1
            Exit For
        End If
    Next
    
    If Exist = 0 Then
    
        Sheets('AFU').Range('B' & Derligne1 + 1) = Sheets('Extract_AFU').Range('D' & i2)
'        Derligne1 = Sheets('AFU').Range('B65536').End(xlUp).Row
        Derligne1 = Derligne1 + 1
    End If
    
    Exist = 0

Next

Il me semble aussi qu'on peut incrémenter Derligne1 simplement sans prendre de risque ?

merci d'éclairer ma lanterne ! 🙂
 
Bonjour moustache, rebonjour le Fil et le Forum
tout à fait exact, il ce code est meilleur.
Mais le fait de mettre exit for, tu sors de la boucle, le suivant te ramène juste avant la next
Cordialement
à+ Denis B)
 
Bonjour Denis, et le forum,

Désolé de te corriger, mais exit for me sort de la première boucle, et le test sur exist m'envoie après le endif, donc sur l'instruction exist = 0

(P... si je me plante, je suis mort 😱hmy: )

@+

B)
 
Bonjour Moustache et le Forum
tu as tout à fait raison
je viens de reprendre le modèle que j'avais fait
tout d'abord, on supprime carrément tout ce qui a trait à 'exist', ça sert à rien
puis ton exit for est tout à fait aproprié.
Je fatigue Lol (il est tard ici (+1h))
à +
Denis
B)
 
- 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

Discussions similaires

Réponses
10
Affichages
792
Réponses
15
Affichages
793
Réponses
1
Affichages
326
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour