Positionner sur ligne resultat de rechercheV

fx4sky -  
 fx4sky -
Bonjour,

Je ne sais pas si je post au bon endroit mais je me permets de solliciter votre aide.

Je ne sais pas si je serais très clair dans ma description mais je ne pourrais vous faire parvenir un exemple de ce que je souhaite mettre en place.

1°) Je suis en train de réaliser un document de gestion d'inventaire du parc informatique.

2°) J'ai mis en place une formule avec RechercheV qui doit me retourner une valeur contenue dans une autre feuille.==> c'est OK

J'aimerai pouvoir avec VBA ou encore mieux, juste avec une formule :

Lorsque je remplis ma cellule C4, qu'Excel trouve le résultat de ma rechercheV et l'affiche en C6 (déjà fonctionnel) puis qu'il me positionne directement sur la feuille et la ligne correspondante résultat de ma rechercheV.

Est ce possible ? avec VBA ? sans VBA ?

Cela renvient en fait à ajouter un enregistrement dans l'une de mes feuilles, juste si la ligne qui contient le résultat de ma rechercheV.

J'imagine que c'est plutôt simple mais je suis débutant.

Merci d'avance pour ceux qui auront eu le courage de me lire et de me répondre ;-)

Bonne journée

4 réponses

  1. alex
     
    Bonjour fx4sky,

    Non, ta demande ne peut pas être réalisée sans VBA.

    Fichier Excel 2007 : https://mon-partage.fr/f/AzetOIsj/

    À l'ouverture du fichier, tu seras sur Feuil2 ;
    regarde les infos qui y sont, et note que
    la cellule active est A1.

    Va sur Feuil1, où la cellule active est C4,
    et contient « X » ; change ce X en une
    des 4 salles « A » à « D ».

    Alt F11 pour voir le code VBA de Feuil1
    Alt F11 pour revenir sur Excel

    Merci de me donner ton avis.

    Cordialement
     
    0
    1. fx4sky
       
      Super !
      Merci Alex !
      Réponse rapide et efficace avec un fichier exemple concret :-)
      Je pense que ça devrait répondre à mon besoin.
      Je refais mon fichier avec la rechercheV qui va bien puis je transpose le code avec les bonnes cellules et bonne références et je fais le test et te donne le retour.
      En tout cas, déjà un grand merci pour ces infos et ton aide.
      Bonne journée
      Cdt
      0
    2. fx4sky > fx4sky
       
      Voila j'ai fais mes modifs avec le changement de cellules + rechercheV + la liste des mes machines ce qui me donne ceci :

      dans ma nouvelle feuil1 :
      Feuil1 =RECHERCHE
      C4=C3
      C6=B5

      Feuil2=BDD

      recherche des infos :
      B3 à C7 devient A2 à K5081

      Ce qui me donne le code ci dessous :


      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Target.Count <> 1 Then Exit Sub
        If Target.Address <> "$C$3" Then Exit Sub
        If [B5] = "" Then Exit Sub
        Dim lig As Long
        With Worksheets("BDD")
          lig = WorksheetFunction.Match([B5], .[A2:K5081], 0) + 3
          .Select: .Cells(lig, 2).Select
        End With
      End Sub


      J'ai un retour : impossible de lire la propriété Match de la classe Worksheetfonction.

      N'ayant pas compris le fonctionnement de cette ligne, (en dehors de la zone de sélection et la sélection et l'affichage de la cellule correspondante), je pense que je dois changer également un paramètre à ce niveau ?

      Le "0" ? Le "+3" ? ou le "lig 2" peut être ?

      Cdt
      0
    3. alex > fx4sky
       
       
      Fichier Excel 2007 : https://mon-partage.fr/f/j2LyMzJv/

      À l'ouverture du fichier, tu seras sur la feuille "BDD" ;
      tu peux voir que les données sont les mêmes qu'avant,
      non plus en B3:C7, mais en A1:B5.

      Va sur la feuille "Recherche" ; selon tes infos :

      a) « C4 = C3 » => tu saisis la lettre de la salle en C3 (et plus en C4) ;
          mais je ne vois pas quel est l'intérêt de répéter cette information
          juste en dessous ; avec le vrai fichier, je suppose qu'il y a une
          bonne raison ?

      b) « C6 = B5 » => la formule avec RECHERCHEV() n'est plus en C6
          mais en B5 ; là encore, je ne vois pas quel est l'intérêt de répéter
          le résultat de la formule ; peut-être une autre bonne raison ?

      En conséquence, dans le nouveau code VBA, on doit détecter un
      changement en $C$3, et tester le résultat de la cellule B5 (en fait,
      ta ligne Match() était déjà correcte, à un détail près).

      Pour .Match(), tu devras remplacer .[B2:B5] par .[A2:K5081]
      comme tu l'as écrit, mais n'ayant pas ton vrai classeur avec
      toutes ses données, j'ai gardé mon mini-exemple.  ;)

      0 idem : ok ; mais il fallait +1 au lieu de +3 (déjà fait)..

      Remarque : si tu saisis une salle inexistante, donc autre que
      A à D (exemple : X) : B5 est vide, et rien ne se passe : tu es
      donc toujours sur la 1ère feuille (c'était pareil avec mon
      1er fichier).

      Si besoin, tu peux me demander plus d'infos ;
      dis-moi si tu as réussi avec ton vrai fichier.

      À te lire.
       
      0
    4. fx4sky > alex
       
      Bonjour Alex,

      Merci pour ton retour.
      Effectivement, il n'est pas nécessaire de répéter les C4 et C3 ni C6 et B5.
      Je me suis mal exprimé.

      Voici les captures d'écrans pour que ça soit plus parlant :

      https://mon-partage.fr/f/xyxAiqJy/

      Mon but, à terme, serait de rajouter un enregistrement (un ordinateur avec une adresse IP) lorsque l'une des cellules B5, B7, B9, B11, B13, B15 (contenant mes formules recherchesV) ne remontent pas d'information.

      Je saisi donc mon adresse IP et si l'un des cellule B est à "0", alors je clique sur mon adresse IP qui me renvoi directement à la ligne correspondante. (pour ajouter les informations manquantes dans les champs correspondants)

      En gros, ce que fait la fonction native Excel du rechercher (Ctrl + F) ou presque ;-)

      Je pense que le problème vient des données que je recherche ou de la mauvaise correspondance entre les colonnes de ma sélection ??


      Cdt
      0
    5. alex > fx4sky
       
       
      Bonjour fx4sky,

      Fichier Excel 2007 : https://mon-partage.fr/f/Ry21O4xB/

      À l'ouverture du fichier, tu seras sur la feuille "BDD", en A1.

      Je te laisse lire la très instructive et rébarbative colonne D
      non, il ne s'agit pas de « la 5ème colonne » ; cf série V :

      https://medias.spotern.com/spots/w640/6614.jpg
      http://www.neotrouve.com/images/v.jpg

      -------------------------------------------

      Va sur la feuille "Recherche" ; cellule active : C3 (vide).

      Saisis ceci en utilisant le point du pavé numérique : 10,0000,5
      puis appuie sur Entrée : je crois que c'est ce que tu veux, et si
      tu retournes sur ta 1ère feuille, regarde comment est C3 ;
      bien sûr, en B5, il y a ce qu'il faut.

      Tu connais le chemin de la macro : Alt F11

      Merci de me donner ton avis.
       
      0
  2. fx4sky
     
    ceci m'a l'air pas mal non plus, mais je n'arrive pas a ajouter le code dans la macro :

    https://forum.openoffice.org/fr/forum/viewtopic.php?f=4&p=61715

    Function IpV4_Fmt (AdrsIp As String) As String
    Dim Ip () As Integer
    Ip = Split(AdrsIp, ".")
    If Ubound (Ip) = 3 Then
    IpV4_Fmt = Format (Ip (0), "000") & Format (Ip (1), "000") & _
    Format (Ip (2), "000") & Format (Ip (3), "000")
    Else
    IpV4_Fmt = AdrsIp
    End If
    End Function
    0
  3. alex
     
    Bonjour Jean,

    Fichier Excel 2007 : https://mon-partage.fr/f/wa3vmzHv/

    Sur la feuille "BDD" :

    ^l - (L minuscule) : lit les infos de "Scan CSV"
    ⚠  J'ai supposé que sur cette feuille, tu n'as jamais un Host Name
    sans MAC Address, car dans ce cas, le Host Name serait ignoré.

    ^t - tri des Adresses IP
    ⚠  Sur ton vrai fichier, la colonne A doit être en format Texte !
    c'est obligatoire pour que cette macro affiche ce qu'il faut.

    ^n - nb de NO, pour un groupe grp donné
    Si tu saisis par exemple 84, la boîte de message "Statut Scan"
    affichera le nombre de NO pour toutes les adresses IP dont
    le 3ème groupe est 84.

    Si besoin, tu peux demander une adaptation.
    À te lire.
     
    0
  4. fx4sky
     
    Bonjour Alex

    Vraiment top tes macros !

    Il ne reste que la dernière qui ne fonctionne pas mais je pense que c'est lié au nombre de séparateurs.

    Une adresse IP est constitué de 4 blocs de 3 chiffres compris entre 0 et 255.
    J'ai changé la ligne suivante :
    IP = Split(Cells(lig, 1), ".", 4): vx = Val(IP(2))
    mais je pense que je me suis trompé car ça ne fonctionne pas non plus sur le bon bloc de chiffres.

    dans mon cas il s'agit du 3 ème bloc en partant de la gauche, ou du 2ème en partant de la droite ;-)
    du type :

    XXX.XXX.148.XXX

    Merci encore pour ton aide car au final tu as pratiquement réalisé tout le développement ;-)

    J'imagine que ça n'est pas juste une passion mais également lié à ton travail ;-)

    Bonne soirée

    Cordialement

    Jean
    0
    1. alex
       
       
      Bonjour Jean,

      Ce que je fais n'est pas lié à mon travail, c'est juste une passion.  ;)

      Tu as écris : « Une adresse IP est constituée de 4 blocs de 3 chiffres
      compris entre 0 et 255. »

      Tu as raison, et j'ai modifié les données IP pour respecter cela ; j'avais oublié
      de réunir le "10" binaire et le nombre décimal suivant : c'est maintenant fait ;
      n'oublie pas que pour le dernier groupe, 0 et 255 sont réservés :

      0 => IP = n° de réseau ; 255 => adresse de diffusion vers tous les PC
      connectés au réseau (et pas un seul PC en particulier).

      Le dernier octet de l'adresse d'un PC est donc de 1 à 254 inclus.

      Je parle d'adresses IPv4 ; pour IPv6, tu verras le moment venu.

      Fichier Excel 2007 : https://mon-partage.fr/f/DcjcTmvR/

      À te lire.
       
      0
      1. fx4sky > alex
         
        Bonjour Alex

        Oula oui, n'allons pas trop vite vers l'adressage ipv6, déjà assez de complexité comme ça en IPV4 lol ;-)

        Effectivement les adresses 0 et 255 broadcast ne sont pas utilisées. Enfin pas dans une gestion d'inventaire.

        Par contre j'ai essayé avec l'un des chiffres de mon sous réseau mais le résultat est toujours le même :

        "Pour grp = 48 : 0 N0" ??

        Cdt

        Jean
        0
      2. alex > fx4sky
         
         
        OK, pas de IPv6 pour l'instant : on reste en IPv4 !  ;P

        Petites précisions pour les non anglophones :
        broadcast = émission (radio et télévision) ; repeat broadcast = rediffusion ;
        (Computing) broadcat message = message système.  ;)

        ----------------------------------------------

        Dans les scans que tu m'avais transmis, en colonne F "Statut Scan", je n'ai pas vu
        de valeur FAUX : seulement VRAI ou "NO" ; ma macro comptabilise ces textes
        "NO" (qui ne sont pas des valeurs booléennes : FAUX sur une feuille Excel et
        FALSE en VBA).

        Vérifie bien le 3ème groupe de tous tes IP : tu n'as aucun 48 en 3ème groupe
        dont le "Statut Scan" est NO puisque tu obtiens ce message :
        «
        Pour 3ème grp = 48 :
        0 NO
        »

        Cela si tu as bien repris mon dernier fichier :
        https://mon-partage.fr/f/DcjcTmvR/

        Sinon : ne m'envoie plus de scans (floutés ou non) mais un vrai fichier Excel,
        où tu auras mis des adresses IP complètes et fictives ; données réalistes
        pour la colonne "Statut Scan" aussi ; et indique-moi ton exemple concret :

        Je saisis 48 et j'ai ensuite 0 NO alors que je devrais avoir 6 NO ;
        bien sûr, 6 est un exemple que j'ai inventé.  ;)

        À te lire.
         
        0
    2. alex
       
       
      Ajout :

      Screen 1 : https://mon-partage.fr/f/tHWBCA2u/
      Screen 2 : https://mon-partage.fr/f/GITbSZ8u/

      Regarde les 2 Screens et l'IP de la ligne 6,
      3ème groupe : 133.84.177.1

      Et en F6, c'est bien "NO".

      Sur mon petit échantillon d'adresses IP fictives, je n'en n'ai pas pour lesquelles
      plus d'une a un 3ème groupe identique, c'est pourquoi j'ai toujours 0 NO ou
      1 NO, jamais 2 ou plus ; mais avec tes données réelles, tu devrais avoir aussi
      ce dernier cas !  ;)
       
      0
      1. fx4sky > alex
         
        Bonjour Alex,

        Après quelques soucis personnels, je viens te faire un retour tardif.
        Tout fonctionne super maintenant. Grand Merci !

        Je voulais pousser le vice un peu plus loin encore, avec deux nouvelles fonctionnalités :

        1°) Ajouter un champ "nb jour de garantie restant pour pc"

        Avec un test de ma date d'achat et, la comparaison à un champ "d'années de garantie" et surtout la possibilité de rajouter une extension de garantie. (avec une MFC rouge si garantie dépassée)

        2°) Encore plus compliqué : Afficher un visuel d'un switch avec les prises déjà utilisées en vert et les prises libres en rouge de manière dynamique avec les informations disponible dans ma feuille BDD :
        colonne "Switch utilisé" + "port du switch" ajoute une pastille sur le port du switch de la couleur verte si utilisé.

        Je mets bien entendu les exemples et images parce que sinon c'est complexe à expliquer de cette manière :

        https://mon-partage.fr/f/sGM250gd/

        Bonne journée

        Cordialement

        Jean
        0