Problème code
Hyana
-
f894009 Messages postés 17414 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17414 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
un ami m'a crée un code VBA pour excel. Celui ci marche bien sur sa version d'Excel (2007) mais pas sur la mienne (2016). Et nous ne trouvons pas pourquoi ...
En fait j'ai 2 cases, une case taux de sélection et une case nombre de mâles. Mon souhait est que lorsque je tape un chiffre dans taux de sélection le chiffre associé apparaisse dans nombre de mâles et inversement lorsque je tape un chiffre dans nombre de mâles le chiffre associé apparaisse dans taux de sélection.
Voici le code proposé :
un ami m'a crée un code VBA pour excel. Celui ci marche bien sur sa version d'Excel (2007) mais pas sur la mienne (2016). Et nous ne trouvons pas pourquoi ...
En fait j'ai 2 cases, une case taux de sélection et une case nombre de mâles. Mon souhait est que lorsque je tape un chiffre dans taux de sélection le chiffre associé apparaisse dans nombre de mâles et inversement lorsque je tape un chiffre dans nombre de mâles le chiffre associé apparaisse dans taux de sélection.
Voici le code proposé :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C4")) Is Nothing Then
For i = 11 To 21
If Target.Value = Cells(i, 4).Value Then
Cells(4, 6).Value = Cells(i, 5).Value
Exit For
End If
Next i
End If
If Not Application.Intersect(Target, Range("F4")) Is Nothing Then
For i = 11 To 21
If Target.Value = Range("E" & i).Value Then
Range("C4").Value = Range("D" & i).Value
End If
Next i
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C4")) Is Nothing Then
For i = 11 To 21
If Target.Value = Range("D" & i).Value Then
Range("F4").Value = Range("E" & i).Value
Exit For
End If
Next i
End If
If Not Application.Intersect(Target, Range("F4")) Is Nothing Then
For i = 11 To 21
If Target.Value = Range("E" & i).Value Then
Range("C4").Value = Range("D" & i).Value
End If
Next i
End If
End Sub
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Problème code
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
1 réponse
Bonjour,
Quand tu dis que ça ne fonctionne pas... c'est à dire ...?
Il y a un message d'erreur ??
Sinon... peux tu essayer d'executer ce code en mode pas à pas pour voir ce qui s'y passe et également jetter un oeil à tes variables (voir les valeurs qu'elles ont...).
Regarde ici : https://www.commentcamarche.net/contents/1381-debogage
ou ici https://silkyroad.developpez.com/VBA/DebuterMacros/#LII-C-4
Il te faudra placer un point d'arrêt dans ta macro :
https://silkyroad.developpez.com/VBA/DebuterMacros/#LII-B-3-d
Cordialement,
Jordane
Quand tu dis que ça ne fonctionne pas... c'est à dire ...?
Il y a un message d'erreur ??
Sinon... peux tu essayer d'executer ce code en mode pas à pas pour voir ce qui s'y passe et également jetter un oeil à tes variables (voir les valeurs qu'elles ont...).
Regarde ici : https://www.commentcamarche.net/contents/1381-debogage
ou ici https://silkyroad.developpez.com/VBA/DebuterMacros/#LII-C-4
Il te faudra placer un point d'arrêt dans ta macro :
https://silkyroad.developpez.com/VBA/DebuterMacros/#LII-B-3-d
Cordialement,
Jordane
If Not Application.Intersect(Target, Range("C4")) Is Nothing Then
Néanmoins, je en comprends pas pourquoi ...
Surprenant que chez vous cela marche avec 2007, car pas possible vous devriez avoir la meme erreur. Le probleme est que vous provoquer des appels sans fin des procedures quand vous modifiez/selectionnez les cellules C4 et/ou F4. Il faut bloquer les evenements excel
Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo fin If Not Application.Intersect(Target, Range("C4")) Is Nothing Then Application.EnableEvents = False For i = 11 To 21 If Target.Value = Cells(i, 4).Value Then Cells(4, 6).Value = Cells(i, 5).Value Exit For End If Next i ElseIf Not Application.Intersect(Target, Range("F4")) Is Nothing Then Application.EnableEvents = False For i = 11 To 21 If Target.Value = Range("E" & i).Value Then Range("C4").Value = Range("D" & i).Value Exit For End If Next i End If fin: Application.EnableEvents = True On Error GoTo 0 End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) On Error GoTo fin If Not Application.Intersect(Target, Range("C4")) Is Nothing Then Application.EnableEvents = False For i = 11 To 21 If Target.Value = Range("D" & i).Value Then Range("F4").Value = Range("E" & i).Value Exit For End If Next i ElseIf Not Application.Intersect(Target, Range("F4")) Is Nothing Then Application.EnableEvents = False For i = 11 To 21 If Target.Value = Range("E" & i).Value Then Range("C4").Value = Range("D" & i).Value Exit For End If Next i End If fin: Application.EnableEvents = True On Error GoTo 0 End Sub