Problème sur formule avec "mid" et "activecell"
Bonsoir tout le monde et merci par avance pour vos lumières.
Je travaille dans la téléphonie et j'utilise un fichier Excel très pratique.
Quand je renseigne un numéro IMEI (15 chiffres), le programme va chercher le nom ud modèle grâce à un intervalle. Mais quand je fais précéder ce numéro de la lettre a en minuscule (pour désigner les rebuts), je veux que le fichier ne m'écrive plus le nom du modèle mais "rebut".
Voici donc la partie de mon code qui nous intéresse :
[size=85]If Target.Column = 10 And Cells(Target.Row, 6) = "" Then
If Mid(ActiveCell, 1, 1) = "a" Then
Cells(Target.Row, 6) = "REBUT"
Cells(Target.Row, 11) = Date
End If
For ribosome = 2 To 500 'le maximum peut être augmenté si besoin
If ActiveCell >= Sheets("Modèles").Range("g" & ribosome) And ActiveCell <= Sheets("Modèles").Range("h" & ribosome) Then
modele = Sheets("Modèles").Range("f" & ribosome)
End If
Next ribosome
Cells(Target.Row, 6).Value = modele
End If[/size]
Rien ne se passe quand j'écris par exemple "a353434084055791". Pourquoi ?
Je joins la version simplifiée de mon fichier de travail donc avec plusieurs erreurs #N/A sans gravité.
Salut,
Voici une proposition
If Target.Column = 10 And Cells(Target.Row, 6) = "" Then
If Mid(ActiveCell, 1, 1) = "a" Then
Cells(Target.Row, 6) = "REBUT"
Cells(Target.Row, 11) = Date
Else
For ribosome = 2 To 500
If ActiveCell >= Sheets("Modèles").Range("g" & ribosome) And ActiveCell <= Sheets("Modèles").Range("h" & ribosome) Then
Cells(Target.Row, 6).Value = Sheets("Modèles").Range("f" & ribosome)
Exit For
End If
Next ribosome
End If
End IfA+
Merci de ta réponse. L'idée est pas mal mais je pense avoir compris... En écrivant un numéro IMEI et en tapant Entrée, je passe à la ligne du dessous. Dans l'intervalle, "activecell" devient la cellule sur laquelle je viens de descendre, et donc le programme met dans F(n) le nom du modèle correspondant à la cellule F(n+1). Je suis blasé, il me faut revoir le code...
Du coup pour ceux que ça intéressera, j'ai enlevé "activecell" (qui pose problème) et remplacé par ceci :
Dim ribosome&
Dim modele As String
Dim ligne&
ligne = Target.Row
If Target.Column = 10 Then
If Mid(Cells(ligne, 10), 1, 1) = "a" Then
Cells(ligne, 6) = "REBUT"
Cells(ligne, 11) = Date
Else
For ribosome = 2 To 500
If Cells(ligne, 10) >= Sheets("Modèles").Range("g" & ribosome) And Cells(ligne, 10) <= Sheets("Modèles").Range("h" & ribosome) Then
Cells(ligne, 6).Value = Sheets("Modèles").Range("f" & ribosome)
Exit For
End If
Next ribosome
End If
End If
Et ça semble fonctionner.