Positionner sur ligne resultat de rechercheV

Fermé
fx4sky - 16 août 2017 à 16:54
 fx4sky - 14 sept. 2017 à 11:48
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


A voir également:

4 réponses

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
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
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
alex > fx4sky
17 août 2017 à 21:25
 
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
fx4sky > alex
18 août 2017 à 10:51
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
alex > fx4sky
18 août 2017 à 17:10
 
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
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
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
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
 
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
fx4sky > alex
30 août 2017 à 18:06
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
 
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
 
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
fx4sky > alex
14 sept. 2017 à 11:48
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