Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le conte nu
existe bien dans la liste et qu'il est sur 4 positions. Je fais donc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet inexi stant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, donc on fa it le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Projec t], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 p ositions
If Len(Target.Value) = 4 Then
If MsgBox("Ce projet n'exi ste pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].End(xlDow n).Offset(1, 0) = Target.Value
Sheets("Project").[ Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application.Undo
modif = modif - 1
End If
Else
MsgBox ("La longueur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuite sur un e
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès que
l'utilisateur sort de la cellule et clique sur n'importe laquelle autre.
Merci de vos réponses.
Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le conte nu
existe bien dans la liste et qu'il est sur 4 positions. Je fais donc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet inexi stant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, donc on fa it le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Projec t], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 p ositions
If Len(Target.Value) = 4 Then
If MsgBox("Ce projet n'exi ste pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].End(xlDow n).Offset(1, 0) = Target.Value
Sheets("Project").[ Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application.Undo
modif = modif - 1
End If
Else
MsgBox ("La longueur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuite sur un e
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès que
l'utilisateur sort de la cellule et clique sur n'importe laquelle autre.
Merci de vos réponses.
Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le conte nu
existe bien dans la liste et qu'il est sur 4 positions. Je fais donc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet inexi stant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, donc on fa it le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Projec t], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 p ositions
If Len(Target.Value) = 4 Then
If MsgBox("Ce projet n'exi ste pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].End(xlDow n).Offset(1, 0) = Target.Value
Sheets("Project").[ Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application.Undo
modif = modif - 1
End If
Else
MsgBox ("La longueur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuite sur un e
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès que
l'utilisateur sort de la cellule et clique sur n'importe laquelle autre.
Merci de vos réponses.
Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa wrote:Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le contenu
existe bien dans la liste et qu'il est sur 4 positions. Je fais donc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet inexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, donc on fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Project], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 Then
If MsgBox("Ce projet n'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].End(xlDown).Offset(1, 0) = Target.Value
Sheets("Project").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application.Undo
modif = modif - 1
End If
Else
MsgBox ("La longueur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuite sur une
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès que
l'utilisateur sort de la cellule et clique sur n'importe laquelle autre.
Merci de vos réponses.
Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa <I...@discussions.microsoft.com> wrote:
Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le contenu
existe bien dans la liste et qu'il est sur 4 positions. Je fais donc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet inexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, donc on fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Project], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 Then
If MsgBox("Ce projet n'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].End(xlDown).Offset(1, 0) = Target.Value
Sheets("Project").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application.Undo
modif = modif - 1
End If
Else
MsgBox ("La longueur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuite sur une
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès que
l'utilisateur sort de la cellule et clique sur n'importe laquelle autre.
Merci de vos réponses.
Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa wrote:Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le contenu
existe bien dans la liste et qu'il est sur 4 positions. Je fais donc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet inexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, donc on fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Project], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 Then
If MsgBox("Ce projet n'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].End(xlDown).Offset(1, 0) = Target.Value
Sheets("Project").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application.Undo
modif = modif - 1
End If
Else
MsgBox ("La longueur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuite sur une
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès que
l'utilisateur sort de la cellule et clique sur n'importe laquelle autre.
Merci de vos réponses.
Bonjour,
Merci de ta réponse.
J'ai testé ta solution et ça marche, seulement je ne comprends pas la
différence entre Target.Row et ActiveCell.Row. Pour moi, ça renvoie la même
chose.
Peux-tu m'expliquer ?
Autre question : dans ton fichier exemple, si tu supprimes la ligne 2 de
l'onglet Project (suppression du projet aa), la liste déroulante de proj et ne
fonctionne plus. (C'est la question que j'ai posé + bas dans le post Pb liste
déroulante). Comment remédier à ce pb (Les utilisateurs doivent pouv oir
modifier l'onglet Project avec ajout, modif ou suppression ?).
Merci.
Isa.
"JB" wrote:Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa wrote:Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le c ontenu
existe bien dans la liste et qu'il est sur 4 positions. Je fais donc c eci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet i nexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, donc o n fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Pr oject], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 The n
If MsgBox("Ce projet n 'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].End(x lDown).Offset(1, 0) = Target.Value
Sheets("Project ").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application.Und o
modif = modif - 1
End If
Else
MsgBox ("La longueur d e ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuite su r une
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès que
l'utilisateur sort de la cellule et clique sur n'importe laquelle autr e.
Merci de vos réponses.- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour,
Merci de ta réponse.
J'ai testé ta solution et ça marche, seulement je ne comprends pas la
différence entre Target.Row et ActiveCell.Row. Pour moi, ça renvoie la même
chose.
Peux-tu m'expliquer ?
Autre question : dans ton fichier exemple, si tu supprimes la ligne 2 de
l'onglet Project (suppression du projet aa), la liste déroulante de proj et ne
fonctionne plus. (C'est la question que j'ai posé + bas dans le post Pb liste
déroulante). Comment remédier à ce pb (Les utilisateurs doivent pouv oir
modifier l'onglet Project avec ajout, modif ou suppression ?).
Merci.
Isa.
"JB" wrote:
Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa <I...@discussions.microsoft.com> wrote:
Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le c ontenu
existe bien dans la liste et qu'il est sur 4 positions. Je fais donc c eci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet i nexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, donc o n fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Pr oject], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 The n
If MsgBox("Ce projet n 'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].End(x lDown).Offset(1, 0) = Target.Value
Sheets("Project ").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application.Und o
modif = modif - 1
End If
Else
MsgBox ("La longueur d e ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuite su r une
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès que
l'utilisateur sort de la cellule et clique sur n'importe laquelle autr e.
Merci de vos réponses.- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour,
Merci de ta réponse.
J'ai testé ta solution et ça marche, seulement je ne comprends pas la
différence entre Target.Row et ActiveCell.Row. Pour moi, ça renvoie la même
chose.
Peux-tu m'expliquer ?
Autre question : dans ton fichier exemple, si tu supprimes la ligne 2 de
l'onglet Project (suppression du projet aa), la liste déroulante de proj et ne
fonctionne plus. (C'est la question que j'ai posé + bas dans le post Pb liste
déroulante). Comment remédier à ce pb (Les utilisateurs doivent pouv oir
modifier l'onglet Project avec ajout, modif ou suppression ?).
Merci.
Isa.
"JB" wrote:Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa wrote:Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le c ontenu
existe bien dans la liste et qu'il est sur 4 positions. Je fais donc c eci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet i nexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, donc o n fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Pr oject], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 The n
If MsgBox("Ce projet n 'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].End(x lDown).Offset(1, 0) = Target.Value
Sheets("Project ").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application.Und o
modif = modif - 1
End If
Else
MsgBox ("La longueur d e ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuite su r une
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès que
l'utilisateur sort de la cellule et clique sur n'importe laquelle autr e.
Merci de vos réponses.- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour,
http://cjoint.com/?elmfdNQQEu
Target.Row donne le no de la ligne de saisie(5 par ex)
Après la saisie le curseur descend d'une ligne
Activecell.Row=6
Dans project, j'ai ajouté pour que la liste soit triée et sans vide
même si on vide une cellule .
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A1:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
JB
On 11 avr, 11:45, Isa wrote:Bonjour,
Merci de ta réponse.
J'ai testé ta solution et ça marche, seulement je ne comprends pas la
différence entre Target.Row et ActiveCell.Row. Pour moi, ça renvoie la même
chose.
Peux-tu m'expliquer ?
Autre question : dans ton fichier exemple, si tu supprimes la ligne 2 de
l'onglet Project (suppression du projet aa), la liste déroulante de projet ne
fonctionne plus. (C'est la question que j'ai posé + bas dans le post Pb liste
déroulante). Comment remédier à ce pb (Les utilisateurs doivent pouvoir
modifier l'onglet Project avec ajout, modif ou suppression ?).
Merci.
Isa.
"JB" wrote:Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa wrote:Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le contenu
existe bien dans la liste et qu'il est sur 4 positions. Je fais donc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet inexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, donc on fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Project], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 Then
If MsgBox("Ce projet n'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].End(xlDown).Offset(1, 0) = Target.Value
Sheets("Project").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application.Undo
modif = modif - 1
End If
Else
MsgBox ("La longueur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuite sur une
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès que
l'utilisateur sort de la cellule et clique sur n'importe laquelle autre.
Merci de vos réponses.- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour,
http://cjoint.com/?elmfdNQQEu
Target.Row donne le no de la ligne de saisie(5 par ex)
Après la saisie le curseur descend d'une ligne
Activecell.Row=6
Dans project, j'ai ajouté pour que la liste soit triée et sans vide
même si on vide une cellule .
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A1:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
JB
On 11 avr, 11:45, Isa <I...@discussions.microsoft.com> wrote:
Bonjour,
Merci de ta réponse.
J'ai testé ta solution et ça marche, seulement je ne comprends pas la
différence entre Target.Row et ActiveCell.Row. Pour moi, ça renvoie la même
chose.
Peux-tu m'expliquer ?
Autre question : dans ton fichier exemple, si tu supprimes la ligne 2 de
l'onglet Project (suppression du projet aa), la liste déroulante de projet ne
fonctionne plus. (C'est la question que j'ai posé + bas dans le post Pb liste
déroulante). Comment remédier à ce pb (Les utilisateurs doivent pouvoir
modifier l'onglet Project avec ajout, modif ou suppression ?).
Merci.
Isa.
"JB" wrote:
Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa <I...@discussions.microsoft.com> wrote:
Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le contenu
existe bien dans la liste et qu'il est sur 4 positions. Je fais donc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet inexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, donc on fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Project], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 Then
If MsgBox("Ce projet n'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].End(xlDown).Offset(1, 0) = Target.Value
Sheets("Project").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application.Undo
modif = modif - 1
End If
Else
MsgBox ("La longueur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuite sur une
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès que
l'utilisateur sort de la cellule et clique sur n'importe laquelle autre.
Merci de vos réponses.- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour,
http://cjoint.com/?elmfdNQQEu
Target.Row donne le no de la ligne de saisie(5 par ex)
Après la saisie le curseur descend d'une ligne
Activecell.Row=6
Dans project, j'ai ajouté pour que la liste soit triée et sans vide
même si on vide une cellule .
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A1:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
JB
On 11 avr, 11:45, Isa wrote:Bonjour,
Merci de ta réponse.
J'ai testé ta solution et ça marche, seulement je ne comprends pas la
différence entre Target.Row et ActiveCell.Row. Pour moi, ça renvoie la même
chose.
Peux-tu m'expliquer ?
Autre question : dans ton fichier exemple, si tu supprimes la ligne 2 de
l'onglet Project (suppression du projet aa), la liste déroulante de projet ne
fonctionne plus. (C'est la question que j'ai posé + bas dans le post Pb liste
déroulante). Comment remédier à ce pb (Les utilisateurs doivent pouvoir
modifier l'onglet Project avec ajout, modif ou suppression ?).
Merci.
Isa.
"JB" wrote:Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa wrote:Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le contenu
existe bien dans la liste et qu'il est sur 4 positions. Je fais donc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet inexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, donc on fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Project], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 Then
If MsgBox("Ce projet n'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].End(xlDown).Offset(1, 0) = Target.Value
Sheets("Project").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application.Undo
modif = modif - 1
End If
Else
MsgBox ("La longueur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuite sur une
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès que
l'utilisateur sort de la cellule et clique sur n'importe laquelle autre.
Merci de vos réponses.- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Ca ne marche toujours pas, la donnée source de la liste déroulante dev ient :
ÞCALER(Project!#REF!;;;NBVAL(Project!$A:$A)-1)
donc erreur et la liste ne se déroule plus.
Je t'explique exactement ce que je fais :
Sur l'onglet Project, je sélectionne la ligne 2, puis clique droit suppr imer
(donc la ligne du projet "aaaa" disparaît).
Et là, je repasse sur la feuil1 et la liste déroulante ne fonctionne p lus.
(je n'avais pas eu l'idée de faire ça mais un utilisateur me l'a fait et
donc m'a mentionné le pb.)
Merci.
"JB" wrote:Bonjour,
http://cjoint.com/?elmfdNQQEu
Target.Row donne le no de la ligne de saisie(5 par ex)
Après la saisie le curseur descend d'une ligne
Activecell.Row=6
Dans project, j'ai ajouté pour que la liste soit triée et sans vide
même si on vide une cellule .
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A1:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
JB
On 11 avr, 11:45, Isa wrote:Bonjour,
Merci de ta réponse.
J'ai testé ta solution et ça marche, seulement je ne comprends pas la
différence entre Target.Row et ActiveCell.Row. Pour moi, ça renvoi e la même
chose.
Peux-tu m'expliquer ?
Autre question : dans ton fichier exemple, si tu supprimes la ligne 2 de
l'onglet Project (suppression du projet aa), la liste déroulante de projet ne
fonctionne plus. (C'est la question que j'ai posé + bas dans le post Pb liste
déroulante). Comment remédier à ce pb (Les utilisateurs doivent pouvoir
modifier l'onglet Project avec ajout, modif ou suppression ?).
Merci.
Isa.
"JB" wrote:Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa wrote:Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le contenu
existe bien dans la liste et qu'il est sur 4 positions. Je fais do nc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° proj et inexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, do nc on fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Project], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 Then
If MsgBox("Ce proj et n'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].E nd(xlDown).Offset(1, 0) = Target.Value
Sheets("Pro ject").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application .Undo
modif = m odif - 1
End If
Else
MsgBox ("La longue ur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuit e sur une
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès qu e
l'utilisateur sort de la cellule et clique sur n'importe laquelle autre.
Merci de vos réponses.- Masquer le texte des messages précéd ents -
- Afficher le texte des messages précédents -- Masquer le texte de s messages précédents -
- Afficher le texte des messages précédents -
Ca ne marche toujours pas, la donnée source de la liste déroulante dev ient :
=DECALER(Project!#REF!;;;NBVAL(Project!$A:$A)-1)
donc erreur et la liste ne se déroule plus.
Je t'explique exactement ce que je fais :
Sur l'onglet Project, je sélectionne la ligne 2, puis clique droit suppr imer
(donc la ligne du projet "aaaa" disparaît).
Et là, je repasse sur la feuil1 et la liste déroulante ne fonctionne p lus.
(je n'avais pas eu l'idée de faire ça mais un utilisateur me l'a fait et
donc m'a mentionné le pb.)
Merci.
"JB" wrote:
Bonjour,
http://cjoint.com/?elmfdNQQEu
Target.Row donne le no de la ligne de saisie(5 par ex)
Après la saisie le curseur descend d'une ligne
Activecell.Row=6
Dans project, j'ai ajouté pour que la liste soit triée et sans vide
même si on vide une cellule .
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A1:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
JB
On 11 avr, 11:45, Isa <I...@discussions.microsoft.com> wrote:
Bonjour,
Merci de ta réponse.
J'ai testé ta solution et ça marche, seulement je ne comprends pas la
différence entre Target.Row et ActiveCell.Row. Pour moi, ça renvoi e la même
chose.
Peux-tu m'expliquer ?
Autre question : dans ton fichier exemple, si tu supprimes la ligne 2 de
l'onglet Project (suppression du projet aa), la liste déroulante de projet ne
fonctionne plus. (C'est la question que j'ai posé + bas dans le post Pb liste
déroulante). Comment remédier à ce pb (Les utilisateurs doivent pouvoir
modifier l'onglet Project avec ajout, modif ou suppression ?).
Merci.
Isa.
"JB" wrote:
Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa <I...@discussions.microsoft.com> wrote:
Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le contenu
existe bien dans la liste et qu'il est sur 4 positions. Je fais do nc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° proj et inexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, do nc on fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Project], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 Then
If MsgBox("Ce proj et n'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].E nd(xlDown).Offset(1, 0) = Target.Value
Sheets("Pro ject").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application .Undo
modif = m odif - 1
End If
Else
MsgBox ("La longue ur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuit e sur une
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès qu e
l'utilisateur sort de la cellule et clique sur n'importe laquelle autre.
Merci de vos réponses.- Masquer le texte des messages précéd ents -
- Afficher le texte des messages précédents -- Masquer le texte de s messages précédents -
- Afficher le texte des messages précédents -
Ca ne marche toujours pas, la donnée source de la liste déroulante dev ient :
ÞCALER(Project!#REF!;;;NBVAL(Project!$A:$A)-1)
donc erreur et la liste ne se déroule plus.
Je t'explique exactement ce que je fais :
Sur l'onglet Project, je sélectionne la ligne 2, puis clique droit suppr imer
(donc la ligne du projet "aaaa" disparaît).
Et là, je repasse sur la feuil1 et la liste déroulante ne fonctionne p lus.
(je n'avais pas eu l'idée de faire ça mais un utilisateur me l'a fait et
donc m'a mentionné le pb.)
Merci.
"JB" wrote:Bonjour,
http://cjoint.com/?elmfdNQQEu
Target.Row donne le no de la ligne de saisie(5 par ex)
Après la saisie le curseur descend d'une ligne
Activecell.Row=6
Dans project, j'ai ajouté pour que la liste soit triée et sans vide
même si on vide une cellule .
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A1:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
JB
On 11 avr, 11:45, Isa wrote:Bonjour,
Merci de ta réponse.
J'ai testé ta solution et ça marche, seulement je ne comprends pas la
différence entre Target.Row et ActiveCell.Row. Pour moi, ça renvoi e la même
chose.
Peux-tu m'expliquer ?
Autre question : dans ton fichier exemple, si tu supprimes la ligne 2 de
l'onglet Project (suppression du projet aa), la liste déroulante de projet ne
fonctionne plus. (C'est la question que j'ai posé + bas dans le post Pb liste
déroulante). Comment remédier à ce pb (Les utilisateurs doivent pouvoir
modifier l'onglet Project avec ajout, modif ou suppression ?).
Merci.
Isa.
"JB" wrote:Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa wrote:Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le contenu
existe bien dans la liste et qu'il est sur 4 positions. Je fais do nc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° proj et inexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, do nc on fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Project], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 Then
If MsgBox("Ce proj et n'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].E nd(xlDown).Offset(1, 0) = Target.Value
Sheets("Pro ject").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application .Undo
modif = m odif - 1
End If
Else
MsgBox ("La longue ur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuit e sur une
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès qu e
l'utilisateur sort de la cellule et clique sur n'importe laquelle autre.
Merci de vos réponses.- Masquer le texte des messages précéd ents -
- Afficher le texte des messages précédents -- Masquer le texte de s messages précédents -
- Afficher le texte des messages précédents -
C'est 'normal'.
Avec la version jointe, Il faut cliquer sur A2 et appuyer avec Sup. La
liste est réorganisée immédiatement avec ce code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A2:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
http://cjoint.com/?elo0EIS7kn
JB
On 11 avr, 14:31, Isa wrote:Ca ne marche toujours pas, la donnée source de la liste déroulante devient :
ÞCALER(Project!#REF!;;;NBVAL(Project!$A:$A)-1)
donc erreur et la liste ne se déroule plus.
Je t'explique exactement ce que je fais :
Sur l'onglet Project, je sélectionne la ligne 2, puis clique droit supprimer
(donc la ligne du projet "aaaa" disparaît).
Et là, je repasse sur la feuil1 et la liste déroulante ne fonctionne plus.
(je n'avais pas eu l'idée de faire ça mais un utilisateur me l'a fait et
donc m'a mentionné le pb.)
Merci.
"JB" wrote:Bonjour,
http://cjoint.com/?elmfdNQQEu
Target.Row donne le no de la ligne de saisie(5 par ex)
Après la saisie le curseur descend d'une ligne
Activecell.Row=6
Dans project, j'ai ajouté pour que la liste soit triée et sans vide
même si on vide une cellule .
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A1:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
JB
On 11 avr, 11:45, Isa wrote:Bonjour,
Merci de ta réponse.
J'ai testé ta solution et ça marche, seulement je ne comprends pas la
différence entre Target.Row et ActiveCell.Row. Pour moi, ça renvoie la même
chose.
Peux-tu m'expliquer ?
Autre question : dans ton fichier exemple, si tu supprimes la ligne 2 de
l'onglet Project (suppression du projet aa), la liste déroulante de projet ne
fonctionne plus. (C'est la question que j'ai posé + bas dans le post Pb liste
déroulante). Comment remédier à ce pb (Les utilisateurs doivent pouvoir
modifier l'onglet Project avec ajout, modif ou suppression ?).
Merci.
Isa.
"JB" wrote:Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa wrote:Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le contenu
existe bien dans la liste et qu'il est sur 4 positions. Je fais donc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet inexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, donc on fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Project], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 Then
If MsgBox("Ce projet n'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].End(xlDown).Offset(1, 0) = Target.Value
Sheets("Project").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application..Undo
modif = modif - 1
End If
Else
MsgBox ("La longueur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuite sur une
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès que
l'utilisateur sort de la cellule et clique sur n'importe laquelle autre.
Merci de vos réponses.- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
C'est 'normal'.
Avec la version jointe, Il faut cliquer sur A2 et appuyer avec Sup. La
liste est réorganisée immédiatement avec ce code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A2:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
http://cjoint.com/?elo0EIS7kn
JB
On 11 avr, 14:31, Isa <I...@discussions.microsoft.com> wrote:
Ca ne marche toujours pas, la donnée source de la liste déroulante devient :
ÞCALER(Project!#REF!;;;NBVAL(Project!$A:$A)-1)
donc erreur et la liste ne se déroule plus.
Je t'explique exactement ce que je fais :
Sur l'onglet Project, je sélectionne la ligne 2, puis clique droit supprimer
(donc la ligne du projet "aaaa" disparaît).
Et là, je repasse sur la feuil1 et la liste déroulante ne fonctionne plus.
(je n'avais pas eu l'idée de faire ça mais un utilisateur me l'a fait et
donc m'a mentionné le pb.)
Merci.
"JB" wrote:
Bonjour,
http://cjoint.com/?elmfdNQQEu
Target.Row donne le no de la ligne de saisie(5 par ex)
Après la saisie le curseur descend d'une ligne
Activecell.Row=6
Dans project, j'ai ajouté pour que la liste soit triée et sans vide
même si on vide une cellule .
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A1:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
JB
On 11 avr, 11:45, Isa <I...@discussions.microsoft.com> wrote:
Bonjour,
Merci de ta réponse.
J'ai testé ta solution et ça marche, seulement je ne comprends pas la
différence entre Target.Row et ActiveCell.Row. Pour moi, ça renvoie la même
chose.
Peux-tu m'expliquer ?
Autre question : dans ton fichier exemple, si tu supprimes la ligne 2 de
l'onglet Project (suppression du projet aa), la liste déroulante de projet ne
fonctionne plus. (C'est la question que j'ai posé + bas dans le post Pb liste
déroulante). Comment remédier à ce pb (Les utilisateurs doivent pouvoir
modifier l'onglet Project avec ajout, modif ou suppression ?).
Merci.
Isa.
"JB" wrote:
Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa <I...@discussions.microsoft.com> wrote:
Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le contenu
existe bien dans la liste et qu'il est sur 4 positions. Je fais donc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet inexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, donc on fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Project], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 Then
If MsgBox("Ce projet n'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].End(xlDown).Offset(1, 0) = Target.Value
Sheets("Project").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application..Undo
modif = modif - 1
End If
Else
MsgBox ("La longueur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuite sur une
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès que
l'utilisateur sort de la cellule et clique sur n'importe laquelle autre.
Merci de vos réponses.- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
C'est 'normal'.
Avec la version jointe, Il faut cliquer sur A2 et appuyer avec Sup. La
liste est réorganisée immédiatement avec ce code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A2:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
http://cjoint.com/?elo0EIS7kn
JB
On 11 avr, 14:31, Isa wrote:Ca ne marche toujours pas, la donnée source de la liste déroulante devient :
ÞCALER(Project!#REF!;;;NBVAL(Project!$A:$A)-1)
donc erreur et la liste ne se déroule plus.
Je t'explique exactement ce que je fais :
Sur l'onglet Project, je sélectionne la ligne 2, puis clique droit supprimer
(donc la ligne du projet "aaaa" disparaît).
Et là, je repasse sur la feuil1 et la liste déroulante ne fonctionne plus.
(je n'avais pas eu l'idée de faire ça mais un utilisateur me l'a fait et
donc m'a mentionné le pb.)
Merci.
"JB" wrote:Bonjour,
http://cjoint.com/?elmfdNQQEu
Target.Row donne le no de la ligne de saisie(5 par ex)
Après la saisie le curseur descend d'une ligne
Activecell.Row=6
Dans project, j'ai ajouté pour que la liste soit triée et sans vide
même si on vide une cellule .
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A1:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
JB
On 11 avr, 11:45, Isa wrote:Bonjour,
Merci de ta réponse.
J'ai testé ta solution et ça marche, seulement je ne comprends pas la
différence entre Target.Row et ActiveCell.Row. Pour moi, ça renvoie la même
chose.
Peux-tu m'expliquer ?
Autre question : dans ton fichier exemple, si tu supprimes la ligne 2 de
l'onglet Project (suppression du projet aa), la liste déroulante de projet ne
fonctionne plus. (C'est la question que j'ai posé + bas dans le post Pb liste
déroulante). Comment remédier à ce pb (Les utilisateurs doivent pouvoir
modifier l'onglet Project avec ajout, modif ou suppression ?).
Merci.
Isa.
"JB" wrote:Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa wrote:Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le contenu
existe bien dans la liste et qu'il est sur 4 positions. Je fais donc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet inexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36, donc on fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Value, [Project], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 Then
If MsgBox("Ce projet n'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Project].End(xlDown).Offset(1, 0) = Target.Value
Sheets("Project").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Application..Undo
modif = modif - 1
End If
Else
MsgBox ("La longueur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Undo
modif = modif - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va ensuite sur une
cellule à côté sur la même ligne mais cela ne marche plus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i Then
Comment puis-je faire en sorte que le contrôle se fasse dès que
l'utilisateur sort de la cellule et clique sur n'importe laquelle autre.
Merci de vos réponses.- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Ok, donc il ne faut pas faire de suppression de la ligne entière sinon ça
plante.
Merci.
"JB" wrote:C'est 'normal'.
Avec la version jointe, Il faut cliquer sur A2 et appuyer avec Sup. La
liste est réorganisée immédiatement avec ce code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A2:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
http://cjoint.com/?elo0EIS7kn
JB
On 11 avr, 14:31, Isa wrote:Ca ne marche toujours pas, la donnée source de la liste déroulante devient :
ÞCALER(Project!#REF!;;;NBVAL(Project!$A:$A)-1)
donc erreur et la liste ne se déroule plus.
Je t'explique exactement ce que je fais :
Sur l'onglet Project, je sélectionne la ligne 2, puis clique droit s upprimer
(donc la ligne du projet "aaaa" disparaît).
Et là, je repasse sur la feuil1 et la liste déroulante ne fonction ne plus.
(je n'avais pas eu l'idée de faire ça mais un utilisateur me l'a f ait et
donc m'a mentionné le pb.)
Merci.
"JB" wrote:Bonjour,
http://cjoint.com/?elmfdNQQEu
Target.Row donne le no de la ligne de saisie(5 par ex)
Après la saisie le curseur descend d'une ligne
Activecell.Row=6
Dans project, j'ai ajouté pour que la liste soit triée et sans v ide
même si on vide une cellule .
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A1:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
JB
On 11 avr, 11:45, Isa wrote:Bonjour,
Merci de ta réponse.
J'ai testé ta solution et ça marche, seulement je ne comprends pas la
différence entre Target.Row et ActiveCell.Row. Pour moi, ça re nvoie la même
chose.
Peux-tu m'expliquer ?
Autre question : dans ton fichier exemple, si tu supprimes la lign e 2 de
l'onglet Project (suppression du projet aa), la liste déroulante de projet ne
fonctionne plus. (C'est la question que j'ai posé + bas dans le post Pb liste
déroulante). Comment remédier à ce pb (Les utilisateurs doiv ent pouvoir
modifier l'onglet Project avec ajout, modif ou suppression ?).
Merci.
Isa.
"JB" wrote:Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa wrote:Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le contenu
existe bien dans la liste et qu'il est sur 4 positions. Je fai s donc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet inexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36 , donc on fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Va lue, [Project], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 Then
If MsgBox("Ce projet n'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Projec t].End(xlDown).Offset(1, 0) = Target.Value
Sheets( "Project").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Applica tion..Undo
modif = modif - 1
End If
Else
MsgBox ("La lo ngueur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Un do
modif = modi f - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va en suite sur une
cellule à côté sur la même ligne mais cela ne marche p lus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i T hen
Comment puis-je faire en sorte que le contrôle se fasse dè s que
l'utilisateur sort de la cellule et clique sur n'importe laque lle autre.
Merci de vos réponses.- Masquer le texte des messages préc édents -
- Afficher le texte des messages précédents -- Masquer le text e des messages précédents -
- Afficher le texte des messages précédents -- Masquer le texte de s messages précédents -
- Afficher le texte des messages précédents -
Ok, donc il ne faut pas faire de suppression de la ligne entière sinon ça
plante.
Merci.
"JB" wrote:
C'est 'normal'.
Avec la version jointe, Il faut cliquer sur A2 et appuyer avec Sup. La
liste est réorganisée immédiatement avec ce code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A2:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
http://cjoint.com/?elo0EIS7kn
JB
On 11 avr, 14:31, Isa <I...@discussions.microsoft.com> wrote:
Ca ne marche toujours pas, la donnée source de la liste déroulante devient :
=DECALER(Project!#REF!;;;NBVAL(Project!$A:$A)-1)
donc erreur et la liste ne se déroule plus.
Je t'explique exactement ce que je fais :
Sur l'onglet Project, je sélectionne la ligne 2, puis clique droit s upprimer
(donc la ligne du projet "aaaa" disparaît).
Et là, je repasse sur la feuil1 et la liste déroulante ne fonction ne plus.
(je n'avais pas eu l'idée de faire ça mais un utilisateur me l'a f ait et
donc m'a mentionné le pb.)
Merci.
"JB" wrote:
Bonjour,
http://cjoint.com/?elmfdNQQEu
Target.Row donne le no de la ligne de saisie(5 par ex)
Après la saisie le curseur descend d'une ligne
Activecell.Row=6
Dans project, j'ai ajouté pour que la liste soit triée et sans v ide
même si on vide une cellule .
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A1:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
JB
On 11 avr, 11:45, Isa <I...@discussions.microsoft.com> wrote:
Bonjour,
Merci de ta réponse.
J'ai testé ta solution et ça marche, seulement je ne comprends pas la
différence entre Target.Row et ActiveCell.Row. Pour moi, ça re nvoie la même
chose.
Peux-tu m'expliquer ?
Autre question : dans ton fichier exemple, si tu supprimes la lign e 2 de
l'onglet Project (suppression du projet aa), la liste déroulante de projet ne
fonctionne plus. (C'est la question que j'ai posé + bas dans le post Pb liste
déroulante). Comment remédier à ce pb (Les utilisateurs doiv ent pouvoir
modifier l'onglet Project avec ajout, modif ou suppression ?).
Merci.
Isa.
"JB" wrote:
Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa <I...@discussions.microsoft.com> wrote:
Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le contenu
existe bien dans la liste et qu'il est sur 4 positions. Je fai s donc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet inexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36 , donc on fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Va lue, [Project], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 Then
If MsgBox("Ce projet n'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Projec t].End(xlDown).Offset(1, 0) = Target.Value
Sheets( "Project").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Applica tion..Undo
modif = modif - 1
End If
Else
MsgBox ("La lo ngueur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Un do
modif = modi f - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va en suite sur une
cellule à côté sur la même ligne mais cela ne marche p lus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i T hen
Comment puis-je faire en sorte que le contrôle se fasse dè s que
l'utilisateur sort de la cellule et clique sur n'importe laque lle autre.
Merci de vos réponses.- Masquer le texte des messages préc édents -
- Afficher le texte des messages précédents -- Masquer le text e des messages précédents -
- Afficher le texte des messages précédents -- Masquer le texte de s messages précédents -
- Afficher le texte des messages précédents -
Ok, donc il ne faut pas faire de suppression de la ligne entière sinon ça
plante.
Merci.
"JB" wrote:C'est 'normal'.
Avec la version jointe, Il faut cliquer sur A2 et appuyer avec Sup. La
liste est réorganisée immédiatement avec ce code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A2:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
http://cjoint.com/?elo0EIS7kn
JB
On 11 avr, 14:31, Isa wrote:Ca ne marche toujours pas, la donnée source de la liste déroulante devient :
ÞCALER(Project!#REF!;;;NBVAL(Project!$A:$A)-1)
donc erreur et la liste ne se déroule plus.
Je t'explique exactement ce que je fais :
Sur l'onglet Project, je sélectionne la ligne 2, puis clique droit s upprimer
(donc la ligne du projet "aaaa" disparaît).
Et là, je repasse sur la feuil1 et la liste déroulante ne fonction ne plus.
(je n'avais pas eu l'idée de faire ça mais un utilisateur me l'a f ait et
donc m'a mentionné le pb.)
Merci.
"JB" wrote:Bonjour,
http://cjoint.com/?elmfdNQQEu
Target.Row donne le no de la ligne de saisie(5 par ex)
Après la saisie le curseur descend d'une ligne
Activecell.Row=6
Dans project, j'ai ajouté pour que la liste soit triée et sans v ide
même si on vide une cellule .
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
[A1:A1000].Sort Key1:=Sheets("Project").Range("A2"),
Header:=xlGuess
End If
End Sub
JB
On 11 avr, 11:45, Isa wrote:Bonjour,
Merci de ta réponse.
J'ai testé ta solution et ça marche, seulement je ne comprends pas la
différence entre Target.Row et ActiveCell.Row. Pour moi, ça re nvoie la même
chose.
Peux-tu m'expliquer ?
Autre question : dans ton fichier exemple, si tu supprimes la lign e 2 de
l'onglet Project (suppression du projet aa), la liste déroulante de projet ne
fonctionne plus. (C'est la question que j'ai posé + bas dans le post Pb liste
déroulante). Comment remédier à ce pb (Les utilisateurs doiv ent pouvoir
modifier l'onglet Project avec ajout, modif ou suppression ?).
Merci.
Isa.
"JB" wrote:Bonsoir,
' Je cherche la ligne active
i = Target.Row
http://cjoint.com/?ektkVEdYj6
JB
On 10 avr, 17:18, Isa wrote:Bonjour,
Lors de la saisie d'une liste déroulante, je veux vérifier si le contenu
existe bien dans la liste et qu'il est sur 4 positions. Je fai s donc ceci sur
Worksheet_Change :
' MAJ de la liste déroulante n° de projet si n° projet inexistant
' Je cherche la ligne active
i = ActiveCell.Row
' La liste déroulante projet va de la ligne 5 à 36 , donc on fait le
contrôle sur ces lignes là
If i >= 5 And i <= 36 Then
If Target.Address = "$A$" & i Then
If IsError(Application.Match(Target.Va lue, [Project], 0)) Then
' Si la cellule a une valeur
If Target.Value <> "" Then
' Si le n° de projet est sur 4 positions
If Len(Target.Value) = 4 Then
If MsgBox("Ce projet n'existe pas dans la liste,
voulez-vous le rajouter ?", vbYesNo) = vbYes Then
[Projec t].End(xlDown).Offset(1, 0) = Target.Value
Sheets( "Project").[Project].Sort
Key1:=Sheets("Project").Range("A2")
Else
Applica tion..Undo
modif = modif - 1
End If
Else
MsgBox ("La lo ngueur de ce projet n'est pas
correcte, veuillez le ressaisir."), vbCritical
Application.Un do
modif = modi f - 1
End If
End If
End If
End If
End If
Cela fonctionne très bien si l'utilisateur saisit puis va en suite sur une
cellule à côté sur la même ligne mais cela ne marche p lus s'il va sur une
autre cellule (pas sur la même ligne).
Ceci vient de ma condition : If Target.Address = "$A$" & i T hen
Comment puis-je faire en sorte que le contrôle se fasse dè s que
l'utilisateur sort de la cellule et clique sur n'importe laque lle autre.
Merci de vos réponses.- Masquer le texte des messages préc édents -
- Afficher le texte des messages précédents -- Masquer le text e des messages précédents -
- Afficher le texte des messages précédents -- Masquer le texte de s messages précédents -
- Afficher le texte des messages précédents -