OVH Cloud OVH Cloud

Question avec .Find et adressage

7 réponses
Avatar
François Racine
J'ai à effectuer une recherche dans une zone a1 à sdligne) sur un nom puis
par la suite à regarder la valeur qui se trouve 2 colonne à droite (colonne
C) de cette valeur. ce que je constate est que .find ne déplace pas le
curseur ni ne me permet d'interroger ou de manipuler ce qui se trouve sur
cette ligne. Comment devrais-je faire?

Ci-dessous un bout de code pour permettre de visualiser mon problème.

i2=1
snoyau=N97
strousse=Visio
With Worksheets(2).Range("a1:a" & sdligne)
Set c = .Find(snom, LookIn:=xlValues)

If Not c Is Nothing Then

c.Activate
If Cells(i2, 3) = snoyau Then
Cells(i2, 4) = strousse
Else

i2 = i2 + 1

End If

7 réponses

Avatar
Daniel
Bonjour.
c.offset(0,2) devrait faire l'affaire ?
Cordialement.
Daniel
"François Racine" a écrit dans le message de
news:
J'ai à effectuer une recherche dans une zone a1 à sdligne) sur un nom puis
par la suite à regarder la valeur qui se trouve 2 colonne à droite
(colonne C) de cette valeur. ce que je constate est que .find ne déplace
pas le curseur ni ne me permet d'interroger ou de manipuler ce qui se
trouve sur cette ligne. Comment devrais-je faire?

Ci-dessous un bout de code pour permettre de visualiser mon problème.

i2=1
snoyau=N97
strousse=Visio
With Worksheets(2).Range("a1:a" & sdligne)
Set c = .Find(snom, LookIn:=xlValues)

If Not c Is Nothing Then

c.Activate
If Cells(i2, 3) = snoyau Then
Cells(i2, 4) = strousse
Else

i2 = i2 + 1

End If



Avatar
François Racine
Merci mais cela génère une erreur de syntaxe. Est-ce que la syntaxe est
correcte?

"Daniel" a écrit dans le message de news:

Bonjour.
c.offset(0,2) devrait faire l'affaire ?
Cordialement.
Daniel
"François Racine" a écrit dans le message de
news:
J'ai à effectuer une recherche dans une zone a1 à sdligne) sur un nom
puis par la suite à regarder la valeur qui se trouve 2 colonne à droite
(colonne C) de cette valeur. ce que je constate est que .find ne déplace
pas le curseur ni ne me permet d'interroger ou de manipuler ce qui se
trouve sur cette ligne. Comment devrais-je faire?

Ci-dessous un bout de code pour permettre de visualiser mon problème.

i2=1
snoyau=N97
strousse=Visio
With Worksheets(2).Range("a1:a" & sdligne)
Set c = .Find(snom, LookIn:=xlValues)

If Not c Is Nothing Then

c.Activate
If Cells(i2, 3) = snoyau Then
Cells(i2, 4) = strousse
Else

i2 = i2 + 1

End If







Avatar
François Racine
Je remarque également que offset ne permet qu'une lecture seule. Peut-on
contourner cela?
Encore merci,

"François Racine" a écrit dans le message de
news: %23$
Merci mais cela génère une erreur de syntaxe. Est-ce que la syntaxe est
correcte?

"Daniel" a écrit dans le message de news:

Bonjour.
c.offset(0,2) devrait faire l'affaire ?
Cordialement.
Daniel
"François Racine" a écrit dans le message
de news:
J'ai à effectuer une recherche dans une zone a1 à sdligne) sur un nom
puis par la suite à regarder la valeur qui se trouve 2 colonne à droite
(colonne C) de cette valeur. ce que je constate est que .find ne
déplace pas le curseur ni ne me permet d'interroger ou de manipuler ce
qui se trouve sur cette ligne. Comment devrais-je faire?

Ci-dessous un bout de code pour permettre de visualiser mon problème.

i2=1
snoyau=N97
strousse=Visio
With Worksheets(2).Range("a1:a" & sdligne)
Set c = .Find(snom, LookIn:=xlValues)

If Not c Is Nothing Then

c.Activate
If Cells(i2, 3) = snoyau Then
Cells(i2, 4) = strousse
Else

i2 = i2 + 1

End If











Avatar
Daniel
Je remarque également que offset ne permet qu'une lecture seule.


????
Non Offset permet toute sorte d'opérations.

Avatar
François Racine
ok, je me serais tromper. Peux-tu me conseiller pour mon bout de code?

Mon code ressemble à ceci maintenant mais c'est sans résultat.

With Worksheets(2).Range("a1:a" & sdligne)

Set c = .Find(snom, LookIn:=xlValues)

If Not c Is Nothing Then

c.Activate
coordonnee = c.Address
ActiveCell.Offset(rowOffset:=0, columnOffset:=2).Activate
vnoyau = ActiveCell.Offset(rowOffset:=0, columnOffset:=2)

If vnoyau = snoyau Then

oncherche = False
coordonnee.Offset(rowOffset:=0, columnOffset:=2) = strousse

End If

Loop

"Daniel" a écrit dans le message de news:
%
Je remarque également que offset ne permet qu'une lecture seule.


????
Non Offset permet toute sorte d'opérations.




Avatar
Daniel
With Worksheets(2).Range("a1:a" & sdligne)

Set c = .Find(snom, LookIn:=xlValues)

If Not c Is Nothing Then

c.Activate
coordonnee = c.Address
ActiveCell.Offset(rowOffset:=0, columnOffset:=2).Activate


Tu sélectionnes la cellule se trouvant deux colonnes à drooite de celle
trouvée par le Find.

vnoyau = ActiveCell.Offset(rowOffset:=0, columnOffset:=2)

Ici tu compares bnoyau à la cellule se trouvant deux colonnes à droite de la

cellule active, soit 4 colonnes à droite de la cellule trouvée par la
commande Find. A mon avis, il faut mettre :

vnoyau = ActiveCell

Ce que tu peux écrire plus simplement :

If Not c Is Nothing Then
vnoyau = c.Offset(0, 2)

Avatar
François Racine
Yes! Merci!
"Daniel" a écrit dans le message de news:

With Worksheets(2).Range("a1:a" & sdligne)

Set c = .Find(snom, LookIn:=xlValues)

If Not c Is Nothing Then

c.Activate
coordonnee = c.Address
ActiveCell.Offset(rowOffset:=0, columnOffset:=2).Activate


Tu sélectionnes la cellule se trouvant deux colonnes à drooite de celle
trouvée par le Find.

vnoyau = ActiveCell.Offset(rowOffset:=0, columnOffset:=2)

Ici tu compares bnoyau à la cellule se trouvant deux colonnes à droite de

la cellule active, soit 4 colonnes à droite de la cellule trouvée par la
commande Find. A mon avis, il faut mettre :

vnoyau = ActiveCell

Ce que tu peux écrire plus simplement :

If Not c Is Nothing Then
vnoyau = c.Offset(0, 2)