problème de compilation

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 !

saverloo

XLDnaute Occasionnel
Bonjour, ci dessous j'ai ma vba dans celle ci lorsque je tape un caractère sur la feuille il m affiche une erreur de compilation, j'ai essayé aussi en ajoutant un End If cela donne me meme resultat ?
De plus si j'accepte de débogé cela fonctionne sauf qu'il calcul a chaque fois je suppose donc qu'il fait une boucle a chaque fois non pourtant j'ai pas de For et de next ?




Private Sub Worksheet_Change(ByVal Target As Range)
If Feuil2.Cells(39, 4) = Me.Cells(4, 1) Then Cells(17, 8) = "T"
If Feuil2.Cells(39, 4) <> Me.Cells(4, 1) Then
If Cells(17, 8) = "T" Then Cells(17, 8) = ""

If Feuil2.Cells(39, 4) = Me.Cells(4, 1) Then Cells(17, 9) = "T"
If Feuil2.Cells(39, 4) <> Me.Cells(4, 1) Then
If Cells(17, 9) = "T" Then Cells(17, 9) = ""

End Sub
 
Re : problème de compilation

Bonjour,

Il te manque 2 End IF.

Il s'agit d'une procédure évènementielle qui survient lorsque que la valeur d'une cellule change. Si à l'intérieur de la procédure tu change la valeur d'une cellule, cela rappelle la procédure, qui change une valeur , qui rappelle la procédure etc.....


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR=lime]'Pour ne par rappeller la procédure[/COLOR]
[COLOR=red]Application.EnableEvents = False[/COLOR]
    If Feuil2.Cells(39, 4) = Me.Cells(4, 1) Then Cells(17, 8) = "T"
    If Feuil2.Cells(39, 4) <> Me.Cells(4, 1) Then
        If Cells(17, 8) = "T" Then Cells(17, 8) = ""
    End If
    If Feuil2.Cells(39, 4) = Me.Cells(4, 1) Then Cells(17, 9) = "T"
    If Feuil2.Cells(39, 4) <> Me.Cells(4, 1) Then
        If Cells(17, 9) = "T" Then Cells(17, 9) = ""
    End If
[COLOR=red]Application.EnableEvents = True[/COLOR]
End Sub

Il y a un défaut de logique dans ta prcédure, je ne suis pas sûr de comprendre ce que tu veux mais une forme comme ci-dessous serait plus appropriée:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
    Select Case feuil2.Cells(39, 4)
        Case Is = Me.Cells(4, 1)
            Cells(17, 8) = "T"
            Cells(17, 9) = "T"
        Case Is = "T"
            Cells(17, 8) = ""
            Cells(17, 9) = ""
    End Select
Application.EnableEvents = True
End Sub

Ou sous forme If Then Else Endif

A+
 
Dernière modification par un modérateur:
Re : problème de compilation

re bonjour,

merci pour ton aide cela fonctionne deja nettement mieux

par contre maintenant dans les 2 cellules il laisse d'office le caractère alors que normalement il devrait si la condition n'est pas remplie effacer la donnée

pour expliquer un peux la chose, j'ai en faite sur le feuille 2 une cellule avec une date qu'il compare avec une cellule sur la feuille ou il y a la vba si le meme alors il affiche dans la case T et celle a coté le T aussi si par contre pas la meme date alors soit on peux mettre un caractère au choix soit rien donc ici en testant je vois qu'il laisse d'office le T dans les deux cellule ? je vois pas pourquoi en faite il fait ca maintenant ?
 
Re : problème de compilation

Bonjour,

Je ne sais pas si tu as relu tes explications mais c'est difficilement lisible.

Alors recommence. Avec une classeur exemple et quelques données et explication claires et ta macro.

A+
 
Re : problème de compilation

re re bon en faite quand tu prends la feuille 2 en A1 tu mets une date toi meme
il va voir en feuille 1 en cellule D 14 si la meme date si celle ci est la meme il affiche EEEE si par contre c'est pas la meme date alors tu peux ecrire ce que tu veux dans la cellule de la feuille 2 a la place du EEEE
EEEE= le T dans le fichier que je fais

j'espere que tu comprendras mieux comme ceci

merci
 
Re : problème de compilation

Re,

Alors ceci suffit, pas la peine d'en rajouter, module de code de feuil2 :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.adress(0, 0) = "A1" Then
        If Target = Feuil1.Cells(14, 4) Then Cells(3, 3) = "eeee" Else Cells(3, 3).ClearContents
    End If
End Sub

Teste uniquement lorsque A1 change.

Essai d'être plus clair la prochaine fois, aère également tes messages.

A+
 
- 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
2
Affichages
257
Réponses
5
Affichages
909
Réponses
15
Affichages
779
Réponses
9
Affichages
508
Réponses
3
Affichages
642
Retour