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

Défis Discussion :

[Exercice] "bien entourer martine"


Sujet :

Défis

  1. #1
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut [Exercice] "bien entourer martine"
    Bonjour,

    je vous propose un nouveau défi:

    • d'abord, le contexte:
      une table: [laTable] et son unique champ: <champ>
      contenant ces données:

    [laTable]
    <champ>
    françoise
    daniel
    martine
    frederic
    claude
    daniel
    andré
    ...
    • le défis:
      je voudrais une requete qui me permute le 6ème enregistrement avec le 4ème à partir de cette table et ainsi avoir:

      françoise
      daniel
      martine
      daniel
      claude
      frederic
      andré
      ...

    tous les coups sont permis!
    même les tordus à partir du moment que ca marche.

    à vos clavier, et bonne cogitation!


    _________________________________________________________________________________________

    Résumé
    légende: pertinant.
    • 1- proposition de random: le pb c'est que le nb d'enregistrement de la table n'est pas fixe
    • 2- proposition de jpcheck: le résultat n'est pas d'une requete
    • 3- une approche de philben : il ne s'agit pas d'une insertion mais d'une permutation à réaliser
    • le vrai problème de vodiem: trouver une requete qui donne un indice par enregistrement
    • une solution de Maxence HUBICHE : en passant par un adp, solus limitée au table
    • une solution de vodiem : SQL+VBA, solus qui peut être discutable

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    C'est certainement pas un défi ca.
    C'est pour débutant et même pas.
    Amicalement

  3. #3
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    alors j'attends ta réponse.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT top 3 nom FROM matable
    union all
    select last(nom) from (select top 6 nom from matable)
    union all
    select last(nom) from (select top 5 nom from matable)
    union all
    select last(nom) from (select top 4 nom from matable)
    union all
    select last(nom) from (select top 7 nom from matable);
    heu je ne conseillerais à personne d'utiliser ça, mais ça marche

    dmboup votre talent ne vous autorise pas le mépris.
    Elle est pas belle la vie ?

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Citation Envoyé par random Voir le message
    dmboup votre talent ne vous autorise pas le mépris.
    Ce n'est pas un mépris. C'est juste la vérité. On attend ici des choses qui donnent à réfléchir sur au moins des mois et pas une question qu'une simple requête résoud sans problème. De plus ne traduit pas un simple message par un point de vu personnel qui de toute facon est très loin de l'idée.

    Il ya des questions plus compliquée dans le forum pour autant on ne les retrouvent pas dans les défis.

    PS : Lisez les régles.
    Amicalement

  6. #6
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    j'aime bien ton truc random,

    je disais entre 6 et 4 pour simplifier mais je reste indécis sur les valeurs et sur le nombre de personnes.

    une requete un peu plus "généraliste" quoi, tu me trouve un truc comme ca?

    DMboup> j'attends aussi ta proposition. on dis que tu as du talent j'aimerais le découvrir . pour le moment c'est random qui est en tête.

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 586
    Points : 34 255
    Points
    34 255
    Par défaut
    bonjour, je ne sais pas si on doit répondre en VBA ou en SQL... Ma réponse pour VBA :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Sub test()
    Dim RS As DAO.Recordset
    Dim EntreeRang4 As String
    Dim EntreeRang6 As String
    'préliminaire, afficher le contenu de la table
    Set RS = CurrentDb.OpenRecordset("SELECT champs FROM latable;")
     
    Do Until RS.EOF
        Debug.Print RS!champs
        RS.MoveNext
    Loop
     
    '1ere étape récupération des valeurs à échanger, modification dans la foulée du rang6
    Set RS = CurrentDb.OpenRecordset("SELECT champs FROM latable;")
     
    Do Until RS.EOF
        If Round(RS.PercentPosition * RS.RecordCount / 100, 0) = 3 Then
            EntreeRang4 = RS!champs
            Debug.Print "ancienne valeur 4 = " & RS!champs
        End If
        If Round(RS.PercentPosition * RS.RecordCount / 100, 0) = 5 Then
            EntreeRang6 = RS!champs
            Debug.Print "ancienne valeur 6 = " & RS!champs
            RS.Edit
            RS!champs = EntreeRang4
            RS.Update
        End If
        RS.MoveNext
    Loop
    '2e étape, modifier le rang4 et lui donner le rang6
    Set RS = CurrentDb.OpenRecordset("SELECT champs FROM latable;")
    Do Until RS.EOF
        If Round(RS.PercentPosition * RS.RecordCount / 100, 0) = 3 Then
            RS.Edit
            RS!champs = EntreeRang6
            RS.Update
        End If
        RS.MoveNext
    Loop
    '3e étape, vérifier que la modif a eu lieu:
    Set RS = CurrentDb.OpenRecordset("SELECT champs FROM latable;")
     
    Do Until RS.EOF
        Debug.Print RS!champs
        RS.MoveNext
    Loop
    Set RS = Nothing
    End Sub
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Peux-tu nous expliquer à part trouver le code adéquate, le but de ce déplacement.

    Starec

  9. #9
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    jpcheck>
    je te remercie de participer.

    oui, tout est permis mais je voulais dans une requete. on va dire: pour ne pas toucher au valeur des tables... (sinon c'est trop facile )
    tu me la refais dans une requete et tu auras gagné. (si tu y arrives )

    perso j'ai une solus un peu tordu SQL+VBA si ca peut aider...
    mais je serais content que vous me fassiez partager vos solutions.

    Starec>
    le but de ce déplacement
    comme le dis le titre: pour que "martine" soit bien entourée (de ses "daniels")...
    un défi ca doit être avant tout ludique.

    mais si tu te penchais sur le pb, peux être reconnaitras tu un pb récurrent.
    et si qq'un pouvait répondre de facon satisfaisante cela profiterait à plusieur. ma solution n'apportant pas suffisamment de réponse.
    peut être que random voit de quoi je parle?

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Citation Envoyé par vodiem Voir le message
    DMboup> j'attends aussi ta proposition. on dis que tu as du talent ...
    Faut pas ce fier au compliment de random (pour le talent que je cherches encore),

    J'ai pas encore participé parce que je n'arrives pas à comprendrele but comme le talentueux Starec.

    Peut tu nous expliquer plus SVP.

    PS : Désolé d'avoir donné une mauvaise impression.
    Amicalement

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par vodiem Voir le message
    comme le dis le titre: pour que "martine" soit bien entourée (de ses "daniels")...
    un défi ca doit être avant tout ludique.

    mais si tu te penchais sur le pb, peux être reconnaitras tu un pb récurrent.
    je t'avoue que non (peut-être que c'est Vendredi )

    Je suis d'accord sur l'aspect ludique que peut avoir ce défi, mais j'aime bien savoir le pourquoi de la chose.

    En effet, ton défi pourrait expliquer le but, pourquoi ? Pour trouver un code générique qui serait utile à tous, car là c'est un peu une particularité que tu veux gérer.

    Starec

  12. #12
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    te répondre serait dévoiller une problématique du sujet qui à si méprendre parait simple, n'es ce pas DMboup?

    mais je te mets sur la voie:
    comment pourrais tu répondre simplement à ce pb?
    tu verras ce qui manque, de là découlera la réponse à vos questions...

    autrement prêtez-vous au jeu et livrez moi une solution.
    et je rappel le but: gagner...
    et puis dites vous: même si vous gagner pas, vous ne perdrez rien non plus.

  13. #13
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour Vodiem,

    Une solution que je n'utiliserai pas...
    Fonction VBA :
    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
     
    Public Function MaFonction(ByVal s As String, ByVal dNow As Date) As String
       Static sPrec As String, bMartine As Boolean, dTime As Date
       If dNow <> dTime Then
          dTime = dNow
          sPrec = ""
          bMartine = False
       End If
       If Not bMartine Then
          If sPrec = "martine" Then
             MaFonction = "daniel"
             bMartine = True
          Else
             MaFonction = s
          End If
          sPrec = s
       ElseIf sPrec <> "daniel" Then
          MaFonction = sPrec
          sPrec = s
       Else
          MaFonction = s
       End If
    End Function
    Requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT
     MaFonction([champ],
     Now()) AS Expr1
    FROM
     latable;
    J'attends de connaître l'utilisation d'un tel truc !

    Amicalement,

    Philippe

  14. #14
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour,

    Allez Vodiem, tu peux dévoiler ta cogitation.
    Le résultat escompté est atteint. Ceux que tu attendais au coin du bois ont été débusqués. Random et Philben se sont exécutés.
    D'autres ont émis quelques remarques, mais raté : Ils ne sont pas tombés dans le piège.
    La plupart, comme moi, ont obtenus divers résultats méritants d'être élevés aussitôt à l'honorable grade de détritus. Je me suis heurté la plupart du temps, comme tu l'espérais, au trie alphabétique ou, et numérique.

    Alors, après http://www.developpez.net/forums/sho...ighlight=array
    Quelles sont tes nouvelles oeuvres?

    Cordialement.

    Ps : Je suis d'accord avec ceux qui émettent des réserves sur cet exercice. Seul un esprit "torturé" pouvait nous entraîner dans cette voie.... Est esprit tout aussi "Tortueux" d'y répondre.
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  15. #15
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    Bonjour,

    Francishop a écrit :
    ...Random et Philben se sont exécutés.


    Ave Vodiem, morituri te salutant


    Philippe

  16. #16
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    francishop> lol. je réponds d'abord à philben

    phiben> tu triches! mais j'adore, c'est de bonne guerre
    j'aimerais dire que tu as trouvé mais non.
    en contournant le pb, de surcroit tu n'y réponds plus:
    je voudrais une requete qui me permute le 6ème enregistrement avec le 4ème à partir de cette table et ainsi avoir:
    => tu as inséré daniel entre martine et frederic ce qui n'est pas pareil.
    n'oublie pas que la liste n'est pas forcemment exhaustive: rien ne garanti une martine, un/deux/trois... daniel (des voisinages de daniel différent...).

    je rappel que si le titre du défi est de "bien entouré martine" (conséquence) le défi ne l'est pas (cause).

    autrement l'intialisation de la requete
    j'ai du avoir aussi recours mais j'ai une solution un tout petit peu plus stable.
    merci de ta participation.

    >francishop
    Ceux que tu attendais au coin du bois ont été débusqués
    détrompe toi. la solution que j'ai est tordu c'est vrai, mais elle est en vba+sql avec des notions de base ce qui ouvre la possibilité à tous d'y participer.
    seul l'ingéniosité/esprit tordu rentre en compte.

    Je suis d'accord avec ceux qui émettent des réserves sur cet exercice
    parceque le défi n'est pas de trouver le pourquoi du déplacement mais le comment

    je te mets sur la voie, puisque tu as pu constater la difficulté dis moi ce qu'il manque pour que ce pb soit un exercice trivial?

  17. #17
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Re Bonjour,
    @Philben
    C'est Bon...Hummmmmmmmmm que c'est bon!

    Bien qu'ici, à l'identique de l'exemple de Monsieur Larousse :"Il s'est exécuté pour éviter des poursuites" ne doit en aucun cas être assimilé à un suicide.

    @Vodiem
    A part ne savoir que dire pour essayer de te "Chambrer" et sachant qu'il ne peut que m'être bénéfique la présente recherche Si je n'étais d'accord pour le présent débat, une stratégie simple serait de circonstance--> Pas intervenir-->Ne pas chercher .

    Citation Envoyé par vodiem Voir le message
    je te mets sur la voie, puisque tu as pu constater la difficulté dis moi ce qu'il manque pour que ce pb soit un exercice trivial?
    HO ho!...J'y retourne de suite.

    Cordialement.
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  18. #18
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    francishop> he bien? la nuit a été fructueuse? avec ton esprit concencieux tu n'as pas du dormir beaucoup...

    j'attends toujours...

  19. #19
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 586
    Points : 34 255
    Points
    34 255
    Par défaut
    moi je me contente du vba fourni...
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  20. #20
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    bon je vais donc vous mettre sur la voie pour que l'on rentre dans le vif du sujet qui m'interesse.
    le défi:
    je voudrais une requete qui me permute le 6ème enregistrement avec le 4ème à partir de cette table
    je donne des numéros d'enregistrements et dans la table vous en avez pas.
    si vous aviez un index le pb serait facile non?

    alors qui peut me donner une requete qui donne un indice par enregistrement?
    cela serait utile ca non, Starec?

    jpcheck> je me contente moi aussi du vba fourni.

Discussions similaires

  1. [RegEx] Extraire plus chaînes entourées de quote
    Par houpli dans le forum Langage
    Réponses: 1
    Dernier message: 27/05/2015, 17h15

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