[OOoBasic]

Résolu/Fermé
Pruls - 28 déc. 2006 à 17:04
 pruls - 25 janv. 2007 à 20:29
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

12 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
28 déc. 2006 à 22:59
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
0
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!
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
30 déc. 2006 à 21:35
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.
0
J'ai fait une feuille bidon et simplifiée.

Mais j'aurais besoin d'un mail.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
31 déc. 2006 à 08:47
Salut,

utilise https://www.cjoint.com/
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > Pruls
2 janv. 2007 à 13:21
Je vais regarder ce soir.

Super ce site:
Ici tu trouves encore plus envoyer de gros fichiers pieces jointes par mail
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
up?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
4 janv. 2007 à 19:03
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.
0
Pruls > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
5 janv. 2007 à 00:07
Ok! J'avais eu peur :p.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
6 janv. 2007 à 13:48
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
0
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!
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
6 janv. 2007 à 15:41
'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
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
8 janv. 2007 à 07:11
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

0
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!
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
8 janv. 2007 à 07:32
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
0
Pff, j'ai trouvé bien mieux pour mon problème:

ctrl + f ou la fonction rechercher d'ooo.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
25 janv. 2007 à 20:09
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?!
0
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.
0