OVH Cloud OVH Cloud

Find ??

6 réponses
Avatar
Shewy du 80 !!
Bonjour à tous.

Je suis à la recherche de compléments d'info sur la fonction "Find"

Je travail sur une feuille nomée "Table" en col A

J'ajoute des données dans cette colonne.

Mais avant d'ajouter je dois aller vérifier qq colo plus loin que la valeur
n'exite pas dejà, sans pour autant quitter ma position dans la Col.A.

Comment faire ??

Voici le bout de code, mais qui me fais perdre ma position initiale
Range("Tables!lblAnnées").Select
i = lblindex.Caption
ActiveCell.Offset(i, 0).Value = TextBox1.Value

'Etiquette de retour tant que contenu InputBox dejà present dans zone nomé
du meme nom
IDAnnée:

'Attribution variable
IDAnnée = InputBox("Veuillez donner un identifiant pour cette Année" &
vbCrLf & vbCrLf & "Par exemple : " & vbCrLf & "1ere Année = ""1A""" & vbCrLf
& "Année Spéciale = ""AS""", "Identifiant Année", "IDAnnée")

On Error GoTo IDAnnée

Application.Goto Reference:="IDAnnée" 'Zone nommé regroupant tous les
identifiants dejà attribués

Selection.Find(What:=IDAnnée, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext,
_
MatchCase:=False).Activate

'la valeur n'est pas présente dans la table de Tous les Identifiants, je
peux donc l'ajouter à coté de là où je me trouve
ActiveCell.Offset(i, 1).Value = IDAnnée

--

6 réponses

Avatar
Shewy du 80 !!
Je viens de trouver une autre solution, mais le NotError n'existe pas :

Case 2:
Range("Tables!lblAnnées").Select
i = lblindex.Caption
ActiveCell.Offset(i, 0).Value = TextBox1.Value

AdressActiveCell = ActiveCell.Address

dmdID:
IDAnnée = InputBox("Veuillez donner un identifiant pour cette Année" &
vbCrLf & vbCrLf & "Par exemple : " & vbCrLf & "1ere Année = ""1A""" & vbCrLf
& "Année Spéciale = ""AS""", "Identifiant Année", "IDAnnée")


'renvoi une erreur si trouve pas
On Error GoTo AjoutID

On notError GoTo dmdID
Application.Goto Reference:="IDAnnée"
Selection.Find(What:=IDAnnée, After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext,
_
MatchCase:úlse).Activate

AjoutID:

Range(AdressActiveCell).Select
ActiveCell.Offset(i, 1).Value = IDAnnée




"Shewy du 80 !!" <not> a écrit dans le message de
news:u7t%

Bonjour à tous.

Je suis à la recherche de compléments d'info sur la fonction "Find"

Je travail sur une feuille nomée "Table" en col A

J'ajoute des données dans cette colonne.

Mais avant d'ajouter je dois aller vérifier qq colo plus loin que la
valeur

n'exite pas dejà, sans pour autant quitter ma position dans la Col.A.

Comment faire ??

Voici le bout de code, mais qui me fais perdre ma position initiale
Range("Tables!lblAnnées").Select
i = lblindex.Caption
ActiveCell.Offset(i, 0).Value = TextBox1.Value

'Etiquette de retour tant que contenu InputBox dejà present dans zone
nomé

du meme nom
IDAnnée:

'Attribution variable
IDAnnée = InputBox("Veuillez donner un identifiant pour cette Année" &
vbCrLf & vbCrLf & "Par exemple : " & vbCrLf & "1ere Année = ""1A""" &
vbCrLf

& "Année Spéciale = ""AS""", "Identifiant Année", "IDAnnée")

On Error GoTo IDAnnée

Application.Goto Reference:="IDAnnée" 'Zone nommé regroupant tous les
identifiants dejà attribués

Selection.Find(What:=IDAnnée, After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByColumns,
SearchDirection:=xlNext,

_
MatchCase:úlse).Activate

'la valeur n'est pas présente dans la table de Tous les Identifiants, je
peux donc l'ajouter à coté de là où je me trouve
ActiveCell.Offset(i, 1).Value = IDAnnée

--





Avatar
papou
Bonjour
Cette ligne est inutile :On notError GoTo dmdID
Puisque s'il y a une erreur tu appelles ton etiquette AjoutID donc s'il n'y
a pas d'erreur la ligne suivant ton On Error sera exécuté.

Cordialement
Pascal

"Shewy du 80 !!" <not> a écrit dans le message de
news:
Je viens de trouver une autre solution, mais le NotError n'existe pas :

Case 2:
Range("Tables!lblAnnées").Select
i = lblindex.Caption
ActiveCell.Offset(i, 0).Value = TextBox1.Value

AdressActiveCell = ActiveCell.Address

dmdID:
IDAnnée = InputBox("Veuillez donner un identifiant pour cette Année" &
vbCrLf & vbCrLf & "Par exemple : " & vbCrLf & "1ere Année = ""1A""" &
vbCrLf

& "Année Spéciale = ""AS""", "Identifiant Année", "IDAnnée")


'renvoi une erreur si trouve pas
On Error GoTo AjoutID

On notError GoTo dmdID
Application.Goto Reference:="IDAnnée"
Selection.Find(What:=IDAnnée, After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByColumns,
SearchDirection:=xlNext,

_
MatchCase:úlse).Activate

AjoutID:

Range(AdressActiveCell).Select
ActiveCell.Offset(i, 1).Value = IDAnnée




"Shewy du 80 !!" <not> a écrit dans le message de
news:u7t%

Bonjour à tous.

Je suis à la recherche de compléments d'info sur la fonction "Find"

Je travail sur une feuille nomée "Table" en col A

J'ajoute des données dans cette colonne.

Mais avant d'ajouter je dois aller vérifier qq colo plus loin que la
valeur

n'exite pas dejà, sans pour autant quitter ma position dans la Col.A.

Comment faire ??

Voici le bout de code, mais qui me fais perdre ma position initiale
Range("Tables!lblAnnées").Select
i = lblindex.Caption
ActiveCell.Offset(i, 0).Value = TextBox1.Value

'Etiquette de retour tant que contenu InputBox dejà present dans zone
nomé

du meme nom
IDAnnée:

'Attribution variable
IDAnnée = InputBox("Veuillez donner un identifiant pour cette Année" &
vbCrLf & vbCrLf & "Par exemple : " & vbCrLf & "1ere Année = ""1A""" &
vbCrLf

& "Année Spéciale = ""AS""", "Identifiant Année", "IDAnnée")

On Error GoTo IDAnnée

Application.Goto Reference:="IDAnnée" 'Zone nommé regroupant tous
les


identifiants dejà attribués

Selection.Find(What:=IDAnnée, After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByColumns,
SearchDirection:=xlNext,

_
MatchCase:úlse).Activate

'la valeur n'est pas présente dans la table de Tous les Identifiants, je
peux donc l'ajouter à coté de là où je me trouve
ActiveCell.Offset(i, 1).Value = IDAnnée

--









Avatar
Shewy du 80 !!
c vrai ! mais je ne vois pas comment faire pour rechercher une occurence
dans une zone sélectionnée.
tant que Find trouve la valeur de l'inputbox dans la zone alors je reviens
sur mes pas et je redemande in ID
Sinon je poursuis et je met l'id ....



"papou" a écrit dans le message de
news:
Bonjour
Cette ligne est inutile :On notError GoTo dmdID
Puisque s'il y a une erreur tu appelles ton etiquette AjoutID donc s'il
n'y

a pas d'erreur la ligne suivant ton On Error sera exécuté.

Cordialement
Pascal

"Shewy du 80 !!" <not> a écrit dans le message de
news:
Je viens de trouver une autre solution, mais le NotError n'existe pas :

Case 2:
Range("Tables!lblAnnées").Select
i = lblindex.Caption
ActiveCell.Offset(i, 0).Value = TextBox1.Value

AdressActiveCell = ActiveCell.Address

dmdID:
IDAnnée = InputBox("Veuillez donner un identifiant pour cette Année" &
vbCrLf & vbCrLf & "Par exemple : " & vbCrLf & "1ere Année = ""1A""" &
vbCrLf

& "Année Spéciale = ""AS""", "Identifiant Année", "IDAnnée")


'renvoi une erreur si trouve pas
On Error GoTo AjoutID

On notError GoTo dmdID
Application.Goto Reference:="IDAnnée"
Selection.Find(What:=IDAnnée, After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByColumns,
SearchDirection:=xlNext,

_
MatchCase:úlse).Activate

AjoutID:

Range(AdressActiveCell).Select
ActiveCell.Offset(i, 1).Value = IDAnnée




"Shewy du 80 !!" <not> a écrit dans le message de
news:u7t%

Bonjour à tous.

Je suis à la recherche de compléments d'info sur la fonction "Find"

Je travail sur une feuille nomée "Table" en col A

J'ajoute des données dans cette colonne.

Mais avant d'ajouter je dois aller vérifier qq colo plus loin que la
valeur

n'exite pas dejà, sans pour autant quitter ma position dans la Col.A.

Comment faire ??

Voici le bout de code, mais qui me fais perdre ma position initiale
Range("Tables!lblAnnées").Select
i = lblindex.Caption
ActiveCell.Offset(i, 0).Value = TextBox1.Value

'Etiquette de retour tant que contenu InputBox dejà present dans zone
nomé

du meme nom
IDAnnée:

'Attribution variable
IDAnnée = InputBox("Veuillez donner un identifiant pour cette Année" &
vbCrLf & vbCrLf & "Par exemple : " & vbCrLf & "1ere Année = ""1A""" &
vbCrLf

& "Année Spéciale = ""AS""", "Identifiant Année", "IDAnnée")

On Error GoTo IDAnnée

Application.Goto Reference:="IDAnnée" 'Zone nommé regroupant tous
les


identifiants dejà attribués

Selection.Find(What:=IDAnnée, After:¬tiveCell, LookIn:=xlFormulas,
_



LookAt:=xlWhole, SearchOrder:=xlByColumns,
SearchDirection:=xlNext,

_
MatchCase:úlse).Activate

'la valeur n'est pas présente dans la table de Tous les Identifiants,
je



peux donc l'ajouter à coté de là où je me trouve
ActiveCell.Offset(i, 1).Value = IDAnnée

--













Avatar
Shewy du 80 !!
Je suis trop con ... ou la fatigue plutot ... ;-)

En ecrivant la réponse je viens de m'apercevoir de la réponse .

Tout simplement !!


dmdID:
IDAnnée = InputBox("....")

'renvoi une erreur si trouve pas
On Error GoTo AjoutID

Application.Goto Reference:="IDAnnée"
Selection.Find(...)

GoTo dmdID

AjoutID:

[..CODE..]

"papou" a écrit dans le message de
news:
Bonjour
Cette ligne est inutile :On notError GoTo dmdID
Puisque s'il y a une erreur tu appelles ton etiquette AjoutID donc s'il
n'y

a pas d'erreur la ligne suivant ton On Error sera exécuté.

Cordialement
Pascal

"Shewy du 80 !!" <not> a écrit dans le message de
news:
Je viens de trouver une autre solution, mais le NotError n'existe pas :

Case 2:
Range("Tables!lblAnnées").Select
i = lblindex.Caption
ActiveCell.Offset(i, 0).Value = TextBox1.Value

AdressActiveCell = ActiveCell.Address

dmdID:
IDAnnée = InputBox("Veuillez donner un identifiant pour cette Année" &
vbCrLf & vbCrLf & "Par exemple : " & vbCrLf & "1ere Année = ""1A""" &
vbCrLf

& "Année Spéciale = ""AS""", "Identifiant Année", "IDAnnée")


'renvoi une erreur si trouve pas
On Error GoTo AjoutID

On notError GoTo dmdID
Application.Goto Reference:="IDAnnée"
Selection.Find(What:=IDAnnée, After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByColumns,
SearchDirection:=xlNext,

_
MatchCase:úlse).Activate

AjoutID:

Range(AdressActiveCell).Select
ActiveCell.Offset(i, 1).Value = IDAnnée




"Shewy du 80 !!" <not> a écrit dans le message de
news:u7t%

Bonjour à tous.

Je suis à la recherche de compléments d'info sur la fonction "Find"

Je travail sur une feuille nomée "Table" en col A

J'ajoute des données dans cette colonne.

Mais avant d'ajouter je dois aller vérifier qq colo plus loin que la
valeur

n'exite pas dejà, sans pour autant quitter ma position dans la Col.A.

Comment faire ??

Voici le bout de code, mais qui me fais perdre ma position initiale
Range("Tables!lblAnnées").Select
i = lblindex.Caption
ActiveCell.Offset(i, 0).Value = TextBox1.Value

'Etiquette de retour tant que contenu InputBox dejà present dans zone
nomé

du meme nom
IDAnnée:

'Attribution variable
IDAnnée = InputBox("Veuillez donner un identifiant pour cette Année" &
vbCrLf & vbCrLf & "Par exemple : " & vbCrLf & "1ere Année = ""1A""" &
vbCrLf

& "Année Spéciale = ""AS""", "Identifiant Année", "IDAnnée")

On Error GoTo IDAnnée

Application.Goto Reference:="IDAnnée" 'Zone nommé regroupant tous
les


identifiants dejà attribués

Selection.Find(What:=IDAnnée, After:¬tiveCell, LookIn:=xlFormulas,
_



LookAt:=xlWhole, SearchOrder:=xlByColumns,
SearchDirection:=xlNext,

_
MatchCase:úlse).Activate

'la valeur n'est pas présente dans la table de Tous les Identifiants,
je



peux donc l'ajouter à coté de là où je me trouve
ActiveCell.Offset(i, 1).Value = IDAnnée

--













Avatar
papou
Bon j'ai pas tout lu parce que je suis fainéant ;-)
Mais si c'est cela qui t'embête :
Range("Tables!lblAnnées").Select
i = lblindex.Caption
ActiveCell.Offset(i, 0).Value = TextBox1.Value
Il suffit de le modifier comme ceci (ce qui aura pour effet de ne pas
déplacer la sélection - à ce sujet, il n'est en théorie jamais nécessaire de
sélectionner un objet pour effectuer une action) :
i = lblindex.Caption
Range("Tables!lblAnnées").Offset(i,0).Value = TextBox1.Value

Cordialement
Pascal


"Shewy du 80 !!" <not> a écrit dans le message de
news:%
c vrai ! mais je ne vois pas comment faire pour rechercher une occurence
dans une zone sélectionnée.
tant que Find trouve la valeur de l'inputbox dans la zone alors je reviens
sur mes pas et je redemande in ID
Sinon je poursuis et je met l'id ....



"papou" a écrit dans le message de
news:
Bonjour
Cette ligne est inutile :On notError GoTo dmdID
Puisque s'il y a une erreur tu appelles ton etiquette AjoutID donc s'il
n'y

a pas d'erreur la ligne suivant ton On Error sera exécuté.

Cordialement
Pascal

"Shewy du 80 !!" <not> a écrit dans le message de
news:
Je viens de trouver une autre solution, mais le NotError n'existe pas
:




Case 2:
Range("Tables!lblAnnées").Select
i = lblindex.Caption
ActiveCell.Offset(i, 0).Value = TextBox1.Value

AdressActiveCell = ActiveCell.Address

dmdID:
IDAnnée = InputBox("Veuillez donner un identifiant pour cette Année"
&



vbCrLf & vbCrLf & "Par exemple : " & vbCrLf & "1ere Année = ""1A""" &
vbCrLf

& "Année Spéciale = ""AS""", "Identifiant Année", "IDAnnée")


'renvoi une erreur si trouve pas
On Error GoTo AjoutID

On notError GoTo dmdID
Application.Goto Reference:="IDAnnée"
Selection.Find(What:=IDAnnée, After:¬tiveCell, LookIn:=xlFormulas,
_



LookAt:=xlWhole, SearchOrder:=xlByColumns,
SearchDirection:=xlNext,

_
MatchCase:úlse).Activate

AjoutID:

Range(AdressActiveCell).Select
ActiveCell.Offset(i, 1).Value = IDAnnée




"Shewy du 80 !!" <not> a écrit dans le message de
news:u7t%

Bonjour à tous.

Je suis à la recherche de compléments d'info sur la fonction "Find"

Je travail sur une feuille nomée "Table" en col A

J'ajoute des données dans cette colonne.

Mais avant d'ajouter je dois aller vérifier qq colo plus loin que la
valeur

n'exite pas dejà, sans pour autant quitter ma position dans la
Col.A.





Comment faire ??

Voici le bout de code, mais qui me fais perdre ma position initiale
Range("Tables!lblAnnées").Select
i = lblindex.Caption
ActiveCell.Offset(i, 0).Value = TextBox1.Value

'Etiquette de retour tant que contenu InputBox dejà present dans
zone




nomé
du meme nom
IDAnnée:

'Attribution variable
IDAnnée = InputBox("Veuillez donner un identifiant pour cette Année"
&




vbCrLf & vbCrLf & "Par exemple : " & vbCrLf & "1ere Année = ""1A"""
&




vbCrLf
& "Année Spéciale = ""AS""", "Identifiant Année", "IDAnnée")

On Error GoTo IDAnnée

Application.Goto Reference:="IDAnnée" 'Zone nommé regroupant
tous




les
identifiants dejà attribués

Selection.Find(What:=IDAnnée, After:¬tiveCell,
LookIn:=xlFormulas,




_
LookAt:=xlWhole, SearchOrder:=xlByColumns,
SearchDirection:=xlNext,

_
MatchCase:úlse).Activate

'la valeur n'est pas présente dans la table de Tous les
Identifiants,




je
peux donc l'ajouter à coté de là où je me trouve
ActiveCell.Offset(i, 1).Value = IDAnnée

--

















Avatar
AV
Je travail sur une feuille nomée "Table" en col A
J'ajoute des données dans cette colonne.
Mais avant d'ajouter je dois aller vérifier qq colo plus loin que la valeur
n'exite pas dejà, sans pour autant quitter ma position dans la Col.A.
Comment faire ??


Dans le module de la feuille "Table" et en supposant (à adapter) que la vérif
doive se faire en colonnes "X:Z" :

Private Sub Worksheet_Change(ByVal zz As Range)
If Selection.Count > 1 Then Exit Sub
If zz.Column <> 1 Then Exit Sub
If Application.CountIf(Range("X:Z"), zz.Value) > 0 Then
Application.EnableEvents = False
zz.Select: MsgBox "Valeur déjà présente !": zz = ""
Application.EnableEvents = True
End If
End Sub

AV