[OOoBasic]
Résolu/Fermé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
28 déc. 2006 à 22:59
Salut,
j'aurai aimé avoir ton fichier excel pour tester
voilà en gros ce que ça donne
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
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
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.
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.
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
31 déc. 2006 à 08:47
Salut,
utilise https://www.cjoint.com/
utilise https://www.cjoint.com/
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
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
Super ce site:
Ici tu trouves encore plus envoyer de gros fichiers pieces jointes par mail
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
up?
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
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.
je vais essayer demain sinon, c'est promis pour fin week end.
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
5 janv. 2007 à 00:07
Ok! J'avais eu peur :p.
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
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
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
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!
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!
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
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
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
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
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)
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
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!
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!
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
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
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
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?!
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?!
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.
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.
30 déc. 2006 à 20:01
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!