XL 2013 VBA_Trouver première valeur à droite

a_loic

XLDnaute Junior
Bonjour,

Je viens de chercher partout et je ne trouve pas ma solution :(

J'ai actuellement dans un code VBA ceci :

Code:
jour = F2.Range("O20")

Sauf que ceci fonctionne une fois sur 2 car la date a tendance à ne pas se trouver toujours au même emplacement.

Mon idée est donc la suivante :

1. je recherche la valeur "de:" (elle n'est présente qu'une fois sur le document)
2. je récupère la première valeur située à droite de "de:"
3. donc ca donne "jour = cette fameuse valeur"


Pensez vous pouvoir m'aider?

Merci d'avance à tous,
Excellente journée,
Loic
 

a_loic

XLDnaute Junior
Bonjour,

Merci pour ta réponse :)

J'ai deux questions :

1. A quoi correspond le "B1" . value ?

2. (j'ai honte d ene pas savoir) comment puis je intégrer une fonction dans une macro de type "sub" car la partie que je cite se trouve en plein milieu d'une macro très longue...


Encore merci,
Excellente journée,
Loic
 

Iznogood1

XLDnaute Impliqué
1/ "B1" signifie première cellule à droite.

C'est équivalent à
jour = r.Offset(0,1).Value


2/ Dans ton module, tu auras quelque chose comme ça
Code:
Function jour()
  Dim r As Range
  Set r = Cells.Find("de:")
  If Not r Is Nothing Then jour = r.Range("B1").Value
End Function
 
Sub MacroTresLongue()
...
...
  Dim j as variant
  j = jour()
 If IsEmpty(j) Then MsgBox "Jour introuvable"
... 
...
End Sub
 

a_loic

XLDnaute Junior
Re :)

Je comprends mieux pour placer le code ;)

Mon seul problème est que la valeur à trouver à droite de "de:" ne se trouve pas toujours à la même distance.
Ce peut être +1 comme +5...

C'est la dessus que je bloque :(

Merci a toi,

Bonne journée,
Loic
 

a_loic

XLDnaute Junior
Re :)

Merci pour tes réponses et ta réactivité...

J'ai dû mal comprendre un truc car j'ai un message d'erreur...

Voilà en gros à quoi ca ressemble :

Code:
Function jour()
  Dim r As Range
  Dim s As Range
  Set r = Cells.Find("de:")
  If Not r Is Nothing Then jour = r.End(xlToRight).Value
 End Function
 
Option Explicit
 Option Compare Text

 Sub ImportRecap()
  Dim objOuvrir As FileDialog

....etc...

Et plus loin j'ai mis :

Code:
  dl = dl + 1
  F1.Cells(dl, 1) = jour()

...etc...

Vois tu où se trouve mon erreur?

Encore merci,

Très bonne journée,
Loic
 

Iznogood1

XLDnaute Impliqué
0/Quel est le message d'erreur ?

1/ Option Compare Text et Option Explicit doivent être avant toute autre déclaration
(je pense que l'erreur vient de là)

2/ C'est quoi F1 (je suppose que c'est le "codename" de la feuille ?

3/ F1.Cells(dl,1) = ... peut fonctionner, mais on préférera F1.Cells(dl,1).Value = ...
Qu'attends-tu de F1.Cells(dl,1) = jour() ?


Je pencherais plutôt vers un code comme celui là :
Code:
Option Explicit
Option Compare Text

Function jour()
  Dim r As Range
  Dim s As Range
  jour = "Jour non touvé"
  Set r = Cells.Find("de:")
  If Not r Is Nothing Then jour = r.End(xlToRight).Value
End Function

Sub ImportRecap()
  ...
  dl = dl + 1
  F1.Cells(dl, 1).value = jour()
...
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16