[OOoBasic]

Résolu
Bonjour à tous,

Il y a quelques temps, j'ai créé une macro pour excel.

Aujourd'hui, je veux passer sous OOo.

La partie du fichier excel passe sans probleme, mais la macro n'est pas reconnue.

Pouvez vous m'aider à traduire en OOoBasic la macro que j'avais écrit?

Merci d'avance.

Voici la macro:

'Logiciels libres mis en place par Pruls afin de savoir si un élément se trouve dans une page excel.
'Il serait intéressant de remplacer les recherches dans les onglets par des fonctions redonnant
'trouve ainsi que onglet, ligne et colonne si nécessaire.
'Vous pouvez envoyez des remarques à Prulsonline@gmail.com .

Sub Nom2()
'On va chercher "nom" (case B1 de l'onglet "Résultat")
Nom = Worksheets("Résultat").Cells(1, 2).Value

'dans différents onglets déja existants.
' ("Mandats","Prospect","VENDUES","Acheteurs","Annonces","Estimation","Arch Vend","Vendeurs","Tous Prospects").
' POUR AJOUTER L'ONGLET "nouvel_onglet" DANS LE DOMAINE DE RECHERCHE:
' 1)COPIER LE TEXTE ENTRE LES DEUX LIGNES DE *********
' 2)COLLER AVANT LA LIGNE DE #############
' 3)REMPLACER LE NOM DE L'ONGLET PAR "nouvel_onglet"
' 4)AJOUTER "nouvel_onglet" DANS LA LISTE CI-DESSUS
' 5)ENREGISTRER

'dans une Zone délimitée par les cases (1,1) et (nblmax,nbcmax)
nblmax = 600
nbcmax = 7

'initialisation de trouve et de PbZone
trouve = False
PbZone = False
'*******************************************************************************************************************************

'recherche dans "Vendeurs"
If Not trouve Then

'initialisation de c
c = 1

While c < nbcmax + 1 And Not trouve

'initialisation de l
l = 1

While l < nblmax + 1 And Not trouve
'test si reconnu
If Nom = Worksheets("Vendeurs").Cells(l, c).Value Then
trouve = True
ligne = l
colonne = c
onglet = "Vendeurs"
End If

l = l + 1
Wend 'fin l
If Worksheets("Vendeurs").Cells(nblmax + 1, c).Value <> "" Then
PbZone = True
End If
c = c + 1

Wend 'fin c
End If

'fin recherche dans "Vendeurs"

'*******************************************************************************************************************************
'recherche dans "Acheteurs"
If Not trouve Then

'initialisation de c
c = 1

While c < nbcmax + 1 And Not trouve

'initialisation de l
l = 1

While l < nblmax + 1 And Not trouve
'test si reconnu
If Nom = Worksheets("Acheteurs").Cells(l, c).Value Then
trouve = True
ligne = l
colonne = c
onglet = "Acheteurs"
End If

l = l + 1
Wend 'fin l

If Worksheets("Acheteurs").Cells(nblmax + 1, c).Value <> "" Then
PbZone = True
End If

c = c + 1

Wend 'fin c
End If
'fin recherche dans "Acheteurs"

'*******************************************************************************************************************************

'recherche dans "Estimation"
If Not trouve Then

'initialisation de c
c = 1

While c < nbcmax + 1 And Not trouve

'initialisation de l
l = 1

While l < nblmax + 1 And Not trouve
'test si reconnu
If Nom = Worksheets("Estimation").Cells(l, c).Value Then
trouve = True
ligne = l
colonne = c
onglet = "Estimation"
End If

l = l + 1
Wend 'fin l

If Worksheets("Estimation").Cells(nblmax + 1, c).Value <> "" Then
PbZone = True
End If

c = c + 1

Wend 'fin c
End If
'fin recherche dans "Estimation"

'*******************************************************************************************************************************

'recherche dans "Annonces"
If Not trouve Then

'initialisation de c
c = 1

While c < nbcmax + 1 And Not trouve

'initialisation de l
l = 1

While l < nblmax + 1 And Not trouve
'test si reconnu
If Nom = Worksheets("Annonces").Cells(l, c).Value Then
trouve = True
ligne = l
colonne = c
onglet = "Annonces"
End If

l = l + 1
Wend 'fin l

If Worksheets("Annonces").Cells(nblmax + 1, c).Value <> "" Then
PbZone = True
End If
c = c + 1

Wend 'fin c
End If
'fin recherche dans "Annonces"

'*******************************************************************************************************************************

'recherche dans "Prospect"
If Not trouve Then

'initialisation de c
c = 1

While c < nbcmax + 1 And Not trouve

'initialisation de l
l = 1

While l < nblmax + 1 And Not trouve
'test si reconnu
If Nom = Worksheets("Prospect").Cells(l, c).Value Then
trouve = True
ligne = l
colonne = c
onglet = "Prospect"
End If

l = l + 1
Wend 'fin l

If Worksheets("Prospect").Cells(nblmax + 1, c).Value <> "" Then
PbZone = True
End If

c = c + 1

Wend 'fin c
End If
'fin recherche dans "Prospect"

'*******************************************************************************************************************************

'recherche dans "Tous Prospects"
If Not trouve Then

'initialisation de c
c = 1

While c < nbcmax + 1 And Not trouve

'initialisation de l
l = 1

While l < nblmax + 1 And Not trouve
'test si reconnu
If Nom = Worksheets("Tous Prospects").Cells(l, c).Value Then
trouve = True
ligne = l
colonne = c
onglet = "Tous Prospects"
End If

l = l + 1
Wend 'fin l

If Worksheets("Tous Prospects").Cells(nblmax + 1, c).Value <> "" Then
PbZone = True
End If

c = c + 1

Wend 'fin c
End If
'fin recherche dans "Tous Prospects"

'*******************************************************************************************************************************
'recherche dans "Arch Vend"
If Not trouve Then

'initialisation de c
c = 1

While c < nbcmax + 1 And Not trouve

'initialisation de l
l = 1

While l < nblmax + 1 And Not trouve
'test si reconnu
If Nom = Worksheets("Arch Vend").Cells(l, c).Value Then
trouve = True
ligne = l
colonne = c
onglet = "Arch Vend"
End If

l = l + 1
Wend 'fin l

If Worksheets("Arch Vend").Cells(nblmax + 1, c).Value <> "" Then
PbZone = True
End If

c = c + 1

Wend 'fin c
End If
'fin recherche dans "Arch Vend"

'********************************************************************************************************************************************

'recherche dans "Mandats"
If Not trouve Then

'initialisation de c
c = 1

While c < nbcmax + 1 And Not trouve

'initialisation de l
l = 1

While l < nblmax + 1 And Not trouve
'test si reconnu
If Nom = Worksheets("Mandats").Cells(l, c).Value Then
trouve = True
ligne = l
colonne = c
onglet = "Mandats"
End If

l = l + 1
Wend 'fin l

If Worksheets("Mandats").Cells(nblmax + 1, c).Value <> "" Then
PbZone = True
End If

c = c + 1

Wend 'fin c
End If
'fin recherche dans "Mandats"

'*******************************************************************************************************************************
'recherche dans "VENDUES"
If Not trouve Then

'initialisation de c
c = 1

While c < nbcmax + 1 And Not trouve

'initialisation de l
l = 1

While l < nblmax + 1 And Not trouve
'test si reconnu
If Nom = Worksheets("VENDUES").Cells(l, c).Value Then
trouve = True
ligne = l
colonne = c
onglet = "VENDUES"
End If

l = l + 1
Wend 'fin l

If Worksheets("VENDUES").Cells(nblmax + 1, c).Value <> "" Then
PbZone = True
End If

c = c + 1

Wend 'fin c
End If
'fin recherche dans "VENDUES"

'*******************************************************************************************************************************

'###############################################################################################################################

'Affichage du résultat dans le cadre de l'onglet "Résultat"

If trouve Then
Worksheets("Résultat").Cells(2, 2) = "trouvé"
Worksheets("Résultat").Cells(3, 2) = "ligne"
Worksheets("Résultat").Cells(3, 3) = ligne
Worksheets("Résultat").Cells(4, 2) = "colonne"
Worksheets("Résultat").Cells(4, 3) = colonne
Worksheets("Résultat").Cells(5, 2) = "onglet"
Worksheets("Résultat").Cells(5, 3) = onglet

' Affichage de la ligne trouvée

Worksheets("Résultat").Cells(10, 2) = Worksheets(onglet).Cells(ligne, 2).Value
Worksheets("Résultat").Cells(10, 3) = Worksheets(onglet).Cells(ligne, 3).Value
Worksheets("Résultat").Cells(10, 4) = Worksheets(onglet).Cells(ligne, 4).Value
Worksheets("Résultat").Cells(10, 5) = Worksheets(onglet).Cells(ligne, 5).Value
Worksheets("Résultat").Cells(10, 6) = Worksheets(onglet).Cells(ligne, 6).Value
Worksheets("Résultat").Cells(10, 7) = Worksheets(onglet).Cells(ligne, 7).Value

Else

For lgn = 2 To 5
For col = 2 To 3
Worksheets("Résultat").Cells(lgn, col) = ""
Next
Next

For col = 2 To 6
Worksheets("Résultat").Cells(10, col) = ""
Next

Worksheets("Résultat").Cells(10, 3) = "introuvable"

If PbZone = True Then
Worksheets("Résultat").Cells(13, 3) = "ATTENTION: Zone DE RECHERCHE TROP PETITE ! ! !"
End If

End If

End Sub

Sub RAZ3()
For lgn = 1 To 5
For col = 2 To 3
Worksheets("Résultat").Cells(lgn, col) = ""
Next
Next

For col = 2 To 7
Worksheets("Résultat").Cells(10, col) = ""
Next

End Sub
Configuration: Windows XP
Firefox 1.5.0.9

12 réponses

  • Votes
  • Date
  • Date décroissante
  1. Tout simplement car je ne la connaissais pas dans son intégralité, et que aillant vu les macro en cours, ca me permettait de tester mes connaissances...

    Dans l'option rechercher, il est possible d'élargir la recherche à tout le classeur, ce que je ne savais pas, d'ou l'intéret de la macro :)

    Merci de t'être pencher sur le sujet.

    Si jamais tu sais si un projet de programme de traduction de macro en ooomacro et inversement existe, ca peut etre sacrément utile.

    Merci encore.
    1. Modérateur
      Salut,

      Je te rappelle ta question :-))

      Pouvez vous m'aider à traduire en OOoBasic la macro que j'avais écrit?

      Et voici ma question pour
      Pff, j'ai trouvé bien mieux pour mon problème:

      ctrl + f ou la fonction rechercher d'ooo.


      Tu as aussi Ctrl+F ou la fonction rechercher sous Excel. Alors pourquoi tu as créé cette macro sous Excel?!
      1. Pff, j'ai trouvé bien mieux pour mon problème:

        ctrl + f ou la fonction rechercher d'ooo.
        1. Modérateur
          Pour le débordement de la zone tu peux mettre la condition autrement

          Tant Que la zone n'est pas vide Et nbLigne <=600
            fait la recherche 
            nbLigne = nbLigne + 1
          Fin Tant Que
          test=nbLigne
          
          If test > 600 Alors
            débordement
          End If
          1. Modérateur
            Salut,

            d'accord pour ça
            Or, le carnet d'adresse s'agrandit au fil du temps, à tel point qu'il risque de déborder de la zone prédéfinie.

            PbZone est donc là pour déceler le fait que ca déborde et qu'il fut modifier le paramétrage de la zone de recherche.


            En ce cas il faut mettre la condition autrement, puisque comment tu as écrit le code s'il n'est pas rempli il ne va pas chercher toute la zone en revanche s'il deborde alors il ne fait rien puisqu'il y a une zone prédéfini

            il ne faut pas mettre tout entre End et Sub (il sont déjà écrit (il y a 2 procédures

            Mais pourquoi ne téléchage tu le fichier que je t'ai donné.
            A part pbZone (je vais corriger ça) il fonctionne, donc je ne vois pas où est le problème (je l'ai testé et chez moi fonctionne)

            Télécharge le fichier et regarde comment le code est positionné

            tu dois avoir 3 zones (voici la structure)

            ' les variables
            définition des variables
            .
            .
            .
            
            ' 1er Sub
            Sub Nom2()
            .
            .
            .
            .
            .
            End Sub
            
            
            ' 2ème Sub
            
            Sub RAZ3()
            .
            .
            End Sub

            1. Ouais, je l'ai dl.

              Mais quand je clique sur le bouton recherche, j'ai pas de résultat, que le test soit censé m'en renvoyer un ou pas.

              Le test que j'avais écrit pour voir si la zone de recherche suffisait était fait pour que cette fameuse zone soit agrandie manuellement.

              Si il y a un élément qui se trouve dans la ligne contigue à la zone de recherche, je renvois un message d'erreur disant qu'il faut modifier la restriction de recherche, qu'elle trop stricte. Dans la feuille originale, il y a une case dédiée dans l'onglet résultat.

              Je n'ai pas décrit la forme du résultat, et c'est peut être ca qui fait qu'on se comprend pas:

              Il y a 3 cas:

              1) la recherche est fructueuse. Alors le résultat, à afficher dans le cadre dédié, est la ligne où la réponse à été trouvée.

              2) la recherche est infructueuse. Un message le disant doit s'afficher en dessous de la case de saisie.

              3) la zone de recherche semble trop restrictive par rapport au classeur: un message indiquant qu'il faut changer les valeurs délimitant la zone de recherche doit s'afficher, dans une case dédiée.

              Par rapport au code que j'ai écrit, il y a au moins deux trucs que j'aurais aimé savoir faire:

              Ecrire une fonction plutot qu'une procédure pour que l'ajout d'onglet soit plus simple pour un profane et que la zone de recherche se mette à jour toute seule.

              Pour optimiser le temps de recherche, il faudrait que la zone ne soit pas la même pour chaque onglet, mais qu'elle s'adapte à chacun...
              Ca suppose que le code puisse se modifier d'un fois sur l'autre, par un stockage des paramètres, sur la feuille résultat par exemple. Il faut alors faire attention à ce que le profane ne soit pas tenté de les modifier...

              Je vais essayer de me plonger la dedans le week end qui vient, là, je suis en partiel...

              Encore merci pour ton aide, précieuse!
          2. Modérateur
            'Procédure pour déclaration

            j'ai voulu dire initialisation des variables
            tu peux appeller la procédure initialisation mais dans ce cas il faut aussi modifier dans les procédures appelantes
            1. Modérateur
              Salut,

              j'ai testé chez moi et ça fonctionne.
              voici le fichier https://www.cjoint.com/?bgnRmRCeOP

              J'ai fait seulement pour la feuille Vendeurs, à toi d'ajouter pour les autres, le code c'est le même, seulement le nom de la feuille va changer

              Voici le code, j'ai mis en commentarie les variables que je n'utilise pas.
              Je te conseille d'ajouter les feuilles une par une et de tester le code, ça va t'eviter les casse têtes (d'ailleurs c'est pour ça que je me suis simplifié la tâche en travaillant sur une seule feuille).

              J'ai enlever pbZone qui d'après moi ne sers à rien, je ne peux pas avoir une zone plus petite de recherche ou plus grande puisque j'ai declaré les limites avec nblmax et nbcmax
              Voici le code
              ' Déclaration des variables 
              
              dim monClasseur as Object
              dim lesFeuilles as Object
              
              'dim fMandats        as Object
              'dim fProspect       as Object
              'dim fVENDUES        as Object
              'dim fAcheteurs      as Object
              'dim fAnnonces       as Object
              'dim fEstimation     as Object
              'dim fArch_Vend      as Object
              dim fVendeurs       as Object
              'dim fTous_Prospects as Object
              dim fResultat       as Object
              
              dim trouve as Boolean
              dim c      as Integer, l       as integer
              dim ligne  as Integer, colonne as Integer
              dim lgn    as Integer, col     as Integer
              dim onglet as String, Nom      as String
              
              Const nblmax = 600
              Const nbcmax = 7
              
              sub declaration()
              
              'Procédure pour déclaration
              'ça evite d'écrire deux fois la même chose
              	monClasseur = thisComponent
              	lesFeuilles = monClasseur.Sheets
              
              'fMandats        = lesFeuilles.getByName("Mandats")
              'fProspect       = lesFeuilles.getByName("Prospect") 
              'fVENDUES        = lesFeuilles.getByName("VENDUES ") 
              'fAcheteurs      = lesFeuilles.getByName("Acheteurs") 
              'fAnnonces       = lesFeuilles.getByName("Annonces") 
              'fEstimation     = lesFeuilles.getByName("Estimation") 
              'fArch_Vend      = lesFeuilles.getByName("Arch_Vend") 
              	fVendeurs       = lesFeuilles.getByName("Vendeurs") 
              'fTous_Prospects = lesFeuilles.getByName("Tous_Prospects")
              	fResultat       = lesFeuilles.getByName("Résultat")
              end sub
              '**********************************************
              
              Sub Nom2()
              
              declaration
              
              'On va chercher "nom" (case B1 de l'onglet "Résultat")
              'Nom = Worksheets("Résultat").Cells(1, 2).Value
              Nom = fResultat.getCellByPosition(1,0).String
              
              
              trouve = False
              
              '***********************************************************************
              'recherche dans "Vendeurs"
              If Not trouve Then
              'initialisation de c
              'dans ooobasic 
              'lignes et colonnes : la numérotation commence à zéro
              ' coordonées cellules : (colonne,ligne) ou plutôt (X,Y) 
                c = 2
              
                While c < nbcmax + 3 And Not trouve
                'initialisation de l
                  l = 2
                  While l < nblmax + 2 And Not trouve
                  'test si reconnu
                    If Nom = fVendeurs.getCellByPosition(c,l).String Then
                      trouve = True
                      ligne = l
                      colonne = c
                      onglet = "Vendeurs"
                    End If
                    l = l + 1
                  Wend 'fin l
                  c = c + 1
                Wend 'fin c
              End If
              
              '#######################################################################
              
              'Affichage du résultat dans le cadre de l'onglet "Résultat"
              
              If trouve Then
                With fResultat       
                  .getCellByPosition(1,1).string = "trouvé"
                  .getCellByPosition(1,2).string = "ligne"
                  .getCellByPosition(2,2).string = ligne
                  .getCellByPosition(1,3).string = "colonne"
                  .getCellByPosition(2,3).string = colonne
                  .getCellByPosition(1,4).string = "onglet"
                  .getCellByPosition(2,4).string = onglet
              
                  ' Affichage de la ligne trouvée
                  with lesFeuilles.getByName(onglet)
                    fResultat.getCellByPosition(1,9).String = .getCellByPosition(1,ligne).String
                    fResultat.getCellByPosition(2,9).String = .getCellByPosition(2,ligne).String
                    fResultat.getCellByPosition(3,9).String = .getCellByPosition(3,ligne).String
                    fResultat.getCellByPosition(4,9).String = .getCellByPosition(4,ligne).String
                    fResultat.getCellByPosition(5,9).String = .getCellByPosition(5,ligne).String
                    fResultat.getCellByPosition(6,9).String = .getCellByPosition(6,ligne).String
                  End With
                 End With
              Else
              	RAZ3
                  fResultat.getCellByPosition(1,1).string = "introuvable"
              End If
              
              
              End Sub
              
              
              
              Sub RAZ3()
              declaration
                  For lgn = 1 To 4
                    For col = 1 To 2
                      fResultat.getCellByPosition(col,lgn).string = ""
                    Next
                  Next
                  
                  For col = 1 To 6
                  	fResultat.getCellByPosition(col,9).string = ""
                  Next
              
              End Sub
              1. Cette macro a pour but d'être utilisée par des perseonne qui ne savent pas programmer.

                L'utilisation d'une zone de recherche est là pour gagner du temps. En effet, il n'est pas nécessaire de faire la recherche dasn toute la feuille quand seulement les 100 premières lignes sont utilisées.

                Or, le carnet d'adresse s'agrandit au fil du temps, à tel point qu'il risque de déborder de la zone prédéfinie.

                PbZone est donc là pour déceler le fait que ca déborde et qu'il fut modifier le paramétrage de la zone de recherche.

                J'ai mis la macro que tu as écrite entre sub et end.

                Lorsque je clique sur le bouton "recherche", je n'ai aucun résultat alors qu'l devrait y en avoir un. :/

                J'ai vu que le format de la feuille variait. N'est il pas plus simple de tout mettre en format texte, sachant qu'aucun calcul ne sera effectué?

                J'ai pas le temps de me plonger dans le code ooobasic, mais avec tout ce que tu as fait, je devrais m'en sortir!

                ( Je voudrais pas abuser mais, si tu as des liens vers des listings de commandes, ca serait génial! )

                Merci beaucoup!
            2. up?
              1. Modérateur
                je ne t'ai pas oublié mais je n'ai pas eu le temps.
                je vais essayer demain sinon, c'est promis pour fin week end.
            3. J'ai fait une feuille bidon et simplifiée.

              Mais j'aurais besoin d'un mail.
              1. Modérateur
                Salut,

                Je ne peux pas transmettre le classeur excel, il s'agit d'un carnet d'adresse professionnel.

                Je ne te demande pas le classeur.
                En revanche fait une copie de ton classeur, ensuite supprime les données et au lieux mes des choses bidon, donc j'aurai un classeur avec des données bidon

                Sous OooBasic il y a un sub Main

                donc ou tu mets tout le code dans Sub Main
                ou t'appel ta procédure dans Sub Main

                Mais comme je t'ai dit j'ai besoin de ton classeur, avec des données bidons pour tester d'abord ta macro excel

                En suite en OooBasic je n'aurai pas de problèmes.

                A toi.
                1. Modérateur
                  Salut,

                  j'aurai aimé avoir ton fichier excel pour tester
                  voilà en gros ce que ça donne
                  ' Déclaration des variables 
                  
                  dim monClasseur as Object
                  dim lesFeuilles as Object
                  
                  dim fMandats        as Object
                  dim fProspect       as Object
                  dim fVENDUES        as Object
                  dim fAcheteurs      as Object
                  dim fAnnonces       as Object
                  dim fEstimation     as Object
                  dim fArch_Vend      as Object
                  dim fVendeurs       as Object
                  dim fTous_Prospects as Object
                  dim fResultat       as Object
                  
                  dim trouve as Boolean, PbZone  as Boolean
                  dim nblmax as Integer, nbcmax  as Integer
                  dim c      as Integer, l       as integer
                  dim ligne  as integer, colonne as Integer
                  dim onglet as String
                  dim Nom, lgn, col
                  
                  monClasseur = thisComponent
                  lesFeuilles = monClasseur.Sheets
                  
                  fMandats        = lesFeuilles.getByName("Mandats")
                  fProspect       = lesFeuilles.getByName("Prospect") 
                  fVENDUES        = lesFeuilles.getByName("VENDUES ") 
                  fAcheteurs      = lesFeuilles.getByName("Acheteurs ") 
                  fAnnonces       = lesFeuilles.getByName("Annonces") 
                  fEstimation     = lesFeuilles.getByName("Estimation") 
                  fArch_Vend      = lesFeuilles.getByName("Arch_Vend") 
                  fVendeurs       = lesFeuilles.getByName("Vendeurs") 
                  fTous_Prospects = lesFeuilles.getByName("Tous_Prospects")
                  fResultat       = lesFeuilles.getByName("Résultat")
                  
                  '**********************************************
                  
                  Sub Nom2()
                  
                  'On va chercher "nom" (case B1 de l'onglet "Résultat")
                  'Nom = Worksheets("Résultat").Cells(1, 2).Value
                  Nom = fResultat.getCellByPosition(1,0)
                  
                  'dans différents onglets déja existants.
                  ' ("Mandats","Prospect","VENDUES","Acheteurs","Annonces","Estimation","Arch Vend","Vendeurs","Tous Prospects").
                  ' POUR AJOUTER L'ONGLET "nouvel_onglet" DANS LE DOMAINE DE RECHERCHE:
                  ' 1)COPIER LE TEXTE ENTRE LES DEUX LIGNES DE *********
                  ' 2)COLLER AVANT LA LIGNE DE #############
                  ' 3)REMPLACER LE NOM DE L'ONGLET PAR "nouvel_onglet"
                  ' 4)AJOUTER "nouvel_onglet" DANS LA LISTE CI-DESSUS
                  ' 5)ENREGISTRER
                  
                  'dans une Zone délimitée par les cases (1,1) et (nblmax,nbcmax)
                  nblmax = 600
                  nbcmax = 7
                  
                  'initialisation de trouve et de PbZone
                  trouve = False
                  PbZone = False
                  '**********************************************************
                  
                  'recherche dans "Vendeurs"
                  If Not trouve Then
                  'initialisation de c
                    c = 1
                  
                    While c < nbcmax + 1 And Not trouve
                    'initialisation de l
                      l = 1
                      While l < nblmax + 1 And Not trouve
                      'test si reconnu
                        If Nom = fVendeurs.getCellByPOsiton(c-1,0) Then 
                          trouve = True
                          ligne = l
                          colonne = c
                          onglet = "Vendeurs"
                        End If
                        l = l + 1
                      Wend 'fin l
                  
                      If fVendeurs.getCellByPositon(c-1,nblmax) <> "" Then 
                        PbZone = True
                      End If
                      c = c + 1
                    Wend 'fin c
                  End If
                  
                  'fin recherche dans "Vendeurs"
                  
                  '*********************************************************************
                  'recherche dans "Acheteurs"
                  If Not trouve Then
                  'initialisation de c
                    c = 1
                  
                    While c < nbcmax + 1 And Not trouve
                      'initialisation de l
                      l = 1
                      While l < nblmax + 1 And Not trouve
                        'test si reconnu
                        If Nom = fAcheteurs.getCellByPosition(c-1,0) Then
                          trouve = True
                          ligne = l
                          colonne = c
                          onglet = "Acheteurs"
                        End If
                        l = l + 1
                      Wend 'fin l
                  
                      If Worksheets("Acheteurs").getCellByPostion(c-1,nblmax) <> "" Then 
                        PbZone = True
                      End If
                      c = c + 1
                    Wend 'fin c
                  End If
                  'fin recherche dans "Acheteurs"
                  
                  '********************************************************************
                  
                  'recherche dans "Estimation"
                  If Not trouve Then
                    'initialisation de c
                    c = 1
                  
                    While c < nbcmax + 1 And Not trouve
                      'initialisation de l
                      l = 1
                      While l < nblmax + 1 And Not trouve
                        'test si reconnu
                        If Nom = fEstimation.getCellByPostion(c-1,0) Then 
                          trouve = True
                          ligne = l
                          colonne = c
                          onglet = "Estimation"
                        End If
                        l = l + 1
                      Wend 'fin l
                  
                      If fEstimation.getCellByPostion(c-1,nblmax) <> "" Then 
                        PbZone = True
                      End If
                      c = c + 1
                    Wend 'fin c
                  End If
                  'fin recherche dans "Estimation"
                  
                  '********************************************************************
                  
                  'recherche dans "Annonces"
                  If Not trouve Then
                    'initialisation de c
                    c = 1
                  
                    While c < nbcmax + 1 And Not trouve
                      'initialisation de l
                      l = 1
                      While l < nblmax + 1 And Not trouve
                        'test si reconnu
                        If Nom = fAnnonces.getCellByPostion(c-1,0) Then 
                          trouve = True
                          ligne = l
                          colonne = c
                          onglet = "Annonces"
                        End If
                        l = l + 1
                      Wend 'fin l
                  
                      If fAnnonces.getCellByPostion(c-1,nblmax) <> "" Then 
                        PbZone = True
                      End If
                      c = c + 1
                    Wend 'fin c
                  End If
                  'fin recherche dans "Annonces"
                  
                  '*******************************************************************
                  
                  'recherche dans "Prospect"
                  If Not trouve Then
                    'initialisation de c
                    c = 1
                  
                    While c < nbcmax + 1 And Not trouve
                      'initialisation de l
                      l = 1
                      While l < nblmax + 1 And Not trouve
                        'test si reconnu
                        If Nom = fProspect.getCellByPostion(c-1,0) Then 
                          trouve = True
                          ligne = l
                          colonne = c
                          onglet = "Prospect"
                        End If
                        l = l + 1
                      Wend 'fin l
                  
                      If fProspect.getCellByPostion(c-1,nblmax) <> "" Then 
                        PbZone = True
                      End If
                      c = c + 1
                    Wend 'fin c
                  End If
                  'fin recherche dans "Prospect"
                  
                  '******************************************************************
                  
                  'recherche dans "Tous Prospects"
                  If Not trouve Then
                    'initialisation de c
                    c = 1
                  
                    While c < nbcmax + 1 And Not trouve
                      'initialisation de l
                      l = 1
                      While l < nblmax + 1 And Not trouve
                        'test si reconnu
                        If Nom = fTous_Prospects.getCellByPostion(c-1,0) Then 
                          trouve = True
                          ligne = l
                          colonne = c
                          onglet = "Tous Prospects"
                        End If
                        l = l + 1
                      Wend 'fin l
                  
                      If fTous_Prospects.getCellByPostion(c-1,nblmax) <> "" Then 
                        PbZone = True
                      End If
                      c = c + 1
                    Wend 'fin c
                  End If
                  'fin recherche dans "Tous Prospects"
                  
                  
                  '**********************************************************************
                  'recherche dans "Arch Vend"
                  If Not trouve Then
                    'initialisation de c
                    c = 1
                  
                    While c < nbcmax + 1 And Not trouve
                      'initialisation de l
                      l = 1
                      While l < nblmax + 1 And Not trouve
                        'test si reconnu
                        If Nom = fArch_Vend.getCellByPostion(c-1,0) Then 
                          trouve = True
                          ligne = l
                          colonne = c
                          onglet = "Arch Vend"
                        End If
                        l = l + 1
                      Wend 'fin l
                  
                      If fArch_Vend.getCellByPostion(c-1,nblmax) <> "" Then 
                        PbZone = True
                      End If
                      c = c + 1
                    Wend 'fin c
                  End If
                  'fin recherche dans "Arch Vend"
                  
                  '**********************************************************************
                  
                  
                  'recherche dans "Mandats"
                  If Not trouve Then
                    'initialisation de c
                    c = 1
                  
                    While c < nbcmax + 1 And Not trouve
                      'initialisation de l
                      l = 1
                      While l < nblmax + 1 And Not trouve
                        'test si reconnu
                        If Nom = fMandats.getCellByPostion(c-1,0) Then 
                          trouve = True
                          ligne = l
                          colonne = c
                          onglet = "Mandats"
                        End If
                        l = l + 1
                      Wend 'fin l
                  
                      If fMandats.getCellByPostion(c-1,nblmax) <> "" Then 
                        PbZone = True
                      End If
                      c = c + 1
                    Wend 'fin c
                  End If
                  'fin recherche dans "Mandats"
                  
                  '***********************************************************************
                  'recherche dans "VENDUES"
                  If Not trouve Then
                    'initialisation de c
                    c = 1
                  
                    While c < nbcmax + 1 And Not trouve
                      'initialisation de l
                      l = 1
                      While l < nblmax + 1 And Not trouve
                        'test si reconnu
                        If Nom = fVENDUES.getCellByPostion(c-1,0) Then 
                          trouve = True
                          ligne = l
                          colonne = c
                          onglet = "VENDUES"
                        End If
                        l = l + 1
                      Wend 'fin l
                  
                      If fVENDUES.getCellByPostion(c-1,nblmax) <> "" Then 
                        PbZone = True
                      End If
                      c = c + 1
                    Wend 'fin c
                  End If
                  'fin recherche dans "VENDUES"
                  
                  '***********************************************************************
                  
                  
                  '#######################################################################
                  
                  'Affichage du résultat dans le cadre de l'onglet "Résultat"
                  
                  If trouve Then
                    With fResultat       
                      .getCellByPostion(1,1) = "trouvé"
                      .getCellByPostion(1,2) = "ligne"
                      .getCellByPostion(2,2) = ligne
                      .getCellByPostion(1,3) = "colonne"
                      .getCellByPostion(2,3) = colonne
                      .getCellByPostion(1,4) = "onglet"
                      .getCellByPostion(2,4) = onglet
                  
                      ' Affichage de la ligne trouvée
                  
                      .getCellByPostion(1,9) = lesFeuilles.getByName(onglet).getCellByPostion(1,ligne-1).Value
                      .getCellByPostion(2,9) = lesFeuilles.getByName(onglet).getCellByPostion(2,ligne-1).Value
                      .getCellByPostion(3,9) = lesFeuilles.getByName(onglet).getCellByPostion(3,ligne-1).Value
                      .getCellByPostion(4,9) = lesFeuilles.getByName(onglet).getCellByPostion(4,ligne-1).Value
                      .getCellByPostion(5,9) = lesFeuilles.getByName(onglet).getCellByPostion(5,ligne-1).Value
                      .getCellByPostion(6,9) = lesFeuilles.getByName(onglet).getCellByPostion(6,ligne-1).Value
                  
                  Else
                  
                      For lgn = 2 To 5
                        For col = 2 To 3
                          .getCellByPostion(col-1,lgn-1) = ""
                        Next
                      Next
                  
                      For col = 2 To 6
                        .getCellByPostion(col-1,9) = ""
                      Next
                  
                      .getCellByPostion(2,9) = "introuvable"
                  
                      If PbZone = True Then
                        .getCellByPostion(2,12) = "ATTENTION: Zone DE RECHERCHE TROP PETITE ! ! !"
                      End If
                    End With
                  End If
                  
                  
                  End Sub
                  
                  
                  
                  Sub RAZ3()
                    With fResultat
                      For lgn = 1 To 5
                        For col = 2 To 3
                          .Cells(col-1,lgn-1) = ""
                        Next
                      Next
                  
                      For col = 2 To 7
                        .Cells(col-1,9) = ""
                      Next
                    End With
                  
                  End Sub
                  
                  1. Merci pour ton aide!

                    J'ai essayé, mais il me demande un sub. J'ai donc intégré la déclaration des variables dans Nom2.

                    Il me dit alors que j'ai un probleme de boucle if then else dans la partie d'affichage du résultat.

                    J'ai beau regarder, je vois pas le problème...

                    Je ne peux pas transmettre le classeur excel, il s'agit d'un carnet d'adresse professionnel.

                    En revanche, je peux le décrire et expliquer un peu mieux le but de la macro:

                    Le carnet d'adresse comprend plusieurs onglets dans lesquels différentes rubriques (en colonne) permettent de trier les contacts.

                    L'idée de la macro est de pouvoir retrouver la localisation d'un champs.
                    Par exemple, je dispose d'un numéro de téléphone, mais je ne me souviens plus si il est déja enregistré dans le carnet d'adresse.
                    En utilisant la macro, associé à des boutons ( 1 pour Nom2, 1 pour RAZ), je peux répondre à cette question.

                    Merci d'avance!