IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

find excels f1book


Sujet :

Delphi

  1. #21
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2025
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2025
    Messages : 16
    Par défaut un résultat enfin
    salut SergioMaster,

    super alors la boucle effectivement me sélectionne dans ma liste workbook le nom déjà ça fonctionne, enfin un début de résultat

    nouvelle question :
    comment arrêter cette boucle après qu'elle ait trouvé le résultat a chercher ? lastrow
    ai mis un showmessage (f1book1.text); // il affiche bien le résultat de la recherche géniale + le résultat dans mes édit

    si je clic sur ok

    la recherche continue jusque au bout de ma liste si ai 15000 lignes il affiche la dernière ligne après qui a du text ?

    Alain

  2. #22
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 982
    Par défaut
    Citation Envoyé par alll1 Voir le message

    comment arrêté cette boucle après qu'il est trouver le résultat a chercher ? lastrow
    Votre question est "comment arrêter une boucle après qu'elle ait trouvé le résultat à chercher ?" donc la réponse est le break !


    c'est le role du break, c'est lui qui arrête la boucle !
    Il faut revoir les bases de la programmation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    procedure TForm1.Button2Click(Sender: TObject);
    var
    j : integer;
    begin
         f1book1.Col := 1;
         for j:=1 to f1book1.LastRow do
           begin
            F1Book1.Row:=j;
            if edit1.Text = f1book1.Text then  break;  
     
        end;
     
      // après le end du for
      with f1book1 do
        showmessage(Format('A: %s, B: %s, C: %s, D: %s, E: %s, F: %s', [textRc[Row,1], textRc[Row,2], textRc[Row,3], textRc[Row,4], textRc[Row,5], textRc[Row,6]]);
     
    end;


    sinon avez-vous testé l'autre proposition de code qui serait plus simple pour vous à intégrer si vous ne connaissez ni for ni break, c'est clé en main et devrait un peu plus rapide.
    Ne toucher pas une ligne de la fonction FindString, vous avez juste à écrire le code si cela retourne True en cas d'élément trouvé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    procedure TForm1.rechercheClick(Sender: TObject);
     
      function FindString(const ATarget: String; AColStart: Integer = 1; AColEnd: Integer = -1): Boolean;
      var
        i, j: Integer;
      begin
        Result := False;
        for  i:= 1 to F1Book1.LastRow do
        begin
          if AColStart <= 0 then
            AColStart := 1;
          if AColEnd <= 0 then
            AColEnd := F1Book1.LastColForRow[i];
          for j := AColStart to AColEnd  do
          begin
            if SameText(F1Book1.TextRC[i, j], ATarget) then
            begin
              F1Book1.TopRow := i;
              F1Book1.LeftCol := j;
              F1Book1.SetSelection(i,j,i,j);
              F1Book1.Row := i;
              F1Book1.Col := j;          
              Result := True;
              Exit;
            end;
          end;
        end;
      end;
     
    begin
      if FindString(edit1.Text, 1, 1) then
        with f1book1 do
          showmessage(Format('A: %s, B: %s, C: %s, D: %s, E: %s, F: %s', [textRc[Row,1], textRc[Row,2], textRc[Row,3], textRc[Row,4], textRc[Row,5], textRc[Row,6]]);
    end;

    Mais je reste convaincu que vous devriez exporter votre carnet d'adresses dans un fichier Excel et utiliser directement Excel.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #23
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2025
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2025
    Messages : 16
    Par défaut
    bonjours ShaiLeTroll,

    je ne connais pas la fonction break ai bien addpagebreak mais la boucle continue

    vous avez tout a fait raison pour la révision des bases mais moi je n'en ai aucune Sorry
    ai quitté école a 14 ans et bossé toute ma vie aujourd'hui suis en retraite
    pour la prog je me dém....... comme je peut pas pro et pas votre savoir en prog non plus c'est vrai désolé
    voila pourquoi je demande même des choses de base

    pour la seconde solution je vais la tester sur un autre tbutton pour voir ce que sa donne


    Alain

  4. #24
    Membre expérimenté
    Homme Profil pro
    ‫‬
    Inscrit en
    Septembre 2024
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : ‫‬

    Informations forums :
    Inscription : Septembre 2024
    Messages : 144
    Par défaut
    Le code proposé par ShaiLeTroll fonctionne parfaitement je viens de l'essayé, il y a une petite correction if ...do dans la condition de comparaison..et un éventuel F1Book1.SetFocus est nécessaire pour mettre en évidence la cellule sélectionnée, sans focus la sélection est masquée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    procedure TForm1.Button1Click(Sender: TObject);
      function FindString(const ATarget: String; AColStart: Integer = 1; AColEnd: Integer = -1): Boolean;
      var
        i, j: Integer;
      begin
        Result := False;
        for  i:= 1 to F1Book1.LastRow do
        begin
          if AColStart <= 0 then
            AColStart := 1;
          if AColEnd <= 0 then
            AColEnd := F1Book1.LastColForRow[i];
          for j := AColStart to AColEnd  do
          begin
            if SameText(F1Book1.TextRC[i, j], ATarget) then
            begin
              F1Book1.TopRow := i;
              F1Book1.LeftCol := j;
              F1Book1.SetSelection(i,j,i,j);
              Result := True;
              Exit;
            end;
          end;
        end;
      end;
    begin
      if FindString(edit1.Text, 1, 1) then
         F1Book1.SetFocus;
    end;

  5. #25
    Membre expérimenté
    Homme Profil pro
    ‫‬
    Inscrit en
    Septembre 2024
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : ‫‬

    Informations forums :
    Inscription : Septembre 2024
    Messages : 144
    Par défaut
    Lorsqu’on bascule en mode design toute l'application devient visible avec tous les menus et rien ne suggère que l’opération de recherche est supportée.

    F1Book1.LaunchDesigner;


  6. #26
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2025
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2025
    Messages : 16
    Par défaut youpi sa fonctionne
    salut ShaiLeTroll et tous,
    youpi sa marche avec un break après le then break;
    bravos a vous tous merci pour votre aide c'est au poil
    je n'ai plus qua a me perfectionné en potassant les base oui bien sur

    un grand merci a vous tous de votre aide


    Alain


  7. #27
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 569
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par alll1 Voir le message
    nouvelle question :
    comment arrêter cette boucle après qu'elle ait trouvé le résultat a chercher ?
    J'ai eu un doute en lisant ceci ! J'ai pourtant bien mis un if edit1.Text = f1book1.Text then break; dans mon code, la seule confusion peut-être, j'avais indiqué un showmessage (devenu inutile je l'avais ôté d'un code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     if edit1.Text = f1book1.Text then 
    //                begin
    //                 Showmessage('trouvé');                                        
                       break;
    //           end;
    )

    P.S. Vous utilisez à foison le bouton [Répondre avec citation], il y a aussi le bouton [Répondre à la discussion] évitez d'utiliser ce dernier en citer le messages en entier (c'est beaucoup moins lisible) si vous devez citer, n'utilisez que les parties qui vous pose problème. J'en ai marre de toujours modifier vos messages.
    P.P.S. Une utilisation du bouton sur les réponses que vous trouvez valides aidera les autres lecteurs qui auraient le même besoin
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #28
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2025
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2025
    Messages : 16
    Par défaut demande d'infos
    salut ShaiLeTroll ,
    j'ai essayer le composant sm dont vous m'aviez parlé , bon c'est intéressant j'ai téléchargé plein de truc et d'exemple plutôt sympas merci pour l'infos sur ces composants gratuits

    juste une autre petite question

    sur mon programme actuel réalisé grâce aux conseils de ce groupe. Quan dje l'exécute sur la machine avec Delphi cela fonctione marche au poil et même bien
    par contre sur une machine n'ayant pas Delphi le programme m'affiche a exécution une erreur Eolesyserror 00060819 classe non enregistré ?
    J'ai déjà copié et enregistré vcf132.ocx avec regsvr32, mais toujours le même problème ?

    auriez vous une idée a me conseiller ?
    auriez vous un vcf1.ocx pour win x86 ou x64 mon fichier a une taille de 618 ko j'en ai vu un sur le net qui est un peut plus gros mais pas réussi a le télécharger ,
    Alain

  9. #29
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 982
    Par défaut
    regsvr32 lequel ?

    C:\Windows\System32 = 64Bits
    C:\Windows\SysWOW64 = 32Bits émulé sur 64Bits - c'est celui-ci pour vous


    Citation Envoyé par alll1 Voir le message
    auriez vous une idée a me conseillé ?
    Utiliser directement Excel et un fichier XLS ou XLSX cela sera plus pérenne.
    Même un fichier CSV sera plus facile à gérer hors Delphi ... ce sujet contient tout ce qu'il faut Passer une StringGrid dans un MemoryStream
    Même un XML via TXMLDocument, idem, vous pourrez l'utiliser hors Delphi

    Avec F1Book vous restez dépendant à une technologie obsolète depuis 25 ans.
    Fait un export en CSV de votre carnet d'adresses et changer votre approche en vous débarrassant de F1Book

    Citation Envoyé par alll1 Voir le message
    auriez vous une idée a me conseillé ?
    Oubliez D7, passer à Delphi: Community Edition
    SQLite via ZeosDB,
    JSON via TJSONObject (encore un fichier utilisable hors Delphi)
    plein de technologie plus récente

    Vous pourriez même changer de langage, du Python par exemple, c'est plus simple et plein de lib qui facilite la vie des développeurs débutants, alors qu'en Delphi, il faut faire beaucoup de chose par soi-même.
    Il y a des tutoriels bien plus nombreux, la communauté Python est bien plus vaste que celle de Delphi ... sans parler qu'un logiciel de gestion de contacts en OpenSource, ça existe sur GitHub
    Non parce que la gestion d'un carnet d'adresse, c'est le sujet de plusieurs tutoriels pour débutant :


    Ensuite une sérialisation d'un Dict en JSON c'est une ligne de code en Python



    Vous n'avez pas lu les consignes !

    Citation Envoyé par SergioMaster Voir le message
    P.S. Vous utilisez à foison le bouton [Répondre avec citation], il y a aussi le bouton [Répondre à la discussion] évitez d'utiliser ce dernier en citer le messages en entier (c'est beaucoup moins lisible) si vous devez citer, n'utilisez que les parties qui vous pose problème. J'en ai marre de toujours modifier vos messages.

    P.P.S. Une utilisation du bouton sur les réponses que vous trouvez valides aidera les autres lecteurs qui auraient le même besoin
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  10. #30
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 569
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Oubliez D7, passer à Delphi: Community Edition
    SQLite via ZeosDB,
    JSON via TJSONObject (encore un fichier utilisable hors Delphi)
    plein de technologie plus récente
    Au cas où vous oubliez D7 pour passer à la dernière version Community autant aussi oublier ZEOS puisque Firedac existe

    Citation Envoyé par ShaiLeTroll Voir le message
    Vous n'avez pas lu les consignes !

    Consignes, faut pas pousser, ce ne sont que des conseils pour une meilleure visibilité pour les autres lecteurs.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #31
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2025
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2025
    Messages : 16
    Par défaut
    bonjour ShaiLeTroll,

    sisi ai bien lut mais le prix de ce soft n'est indiquer nul par
    le téléchargement est gratuit et je pense que le soft ne l'ai pas prix de la licence ? surprise après inscription peut être ?
    sur leurs site d'entrée il demande nom prénom Age sexe etx.......

    combien coute se soft ? quant ai acheter Delphi 7 déjà a l'époque sa m'a couté très chère , je comprend bien que chaque chose se paye mais quant même
    je n'aime pas les surprise pourrie

    alors les autre soft bon bof

    l'activx de delphi 7 est un peut a l'ouest avec le / formula one / pdf / chartfx / vfspell/ vtchar apparement c'est tout ce qui touche vcf132.ocx
    voila pourquoi ma question sur vcf132

    dans Delphi 7 j'ai effectivement une démo fournie avec un stringgrid et j'arrive a charger bien sur mon fichier original qui est en *.xls au départ il créait un stringgrid au démarrage je l'ai modifier
    et sa fonctionne sur les autre machine effectivement en chargeant mon fichier excels
    le problème est re encore a refaire la recherche dans la strigggrid du nom dans la colone1 et afficher chaque colonne dans un edit1 pour colone1 edit2 pour colonne 2 etc.... edit3 edit4 edit5 edit6


    donc retour au départ avec une stringgrid, c'était trop beau pour être vrai
    ma version est en 32 bits oui donc dans sytem32 de windows


    Alain

  12. #32
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 569
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par alll1 Voir le message
    si j'ai bien lu mais le prix de ce soft n'est indiqué nulle part
    Normal la version community est gratuite, il y a juste un contrat à respecter : la barre du chiffre d'affaires (5000$ par an).
    Cette version est comparable à un version 12.1 professionnelle avec les mêmes limitations
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/06/2021, 16h47
  2. [XL-2013] fonction find excel
    Par chtimi15 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/01/2020, 15h45
  3. Problème avec Find(), Excel Vba
    Par mmmxtina dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 28/05/2009, 11h57
  4. méthode FIND EXCEL
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/01/2007, 18h06
  5. [VBA Excel] problème de range avec find
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/11/2005, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo