Recherche sur 2 colonnes !
TFM
-
TFM67 Messages postés 6 Statut Membre -
TFM67 Messages postés 6 Statut Membre -
Bonjour à toutes et à tous,
'
Je viens sur ce forum pour (je l'espère) que vous puissiez m'aider du mieux possible.
Alors voilà, je suis actuellement en train de mettre en place un outil de gestion de prêts de matériel sur Excel. J'ai déjà bien avancé sur le projet, mais il me manque une chose indispensable! Il me faut un bouton me permettant de savoir si l'ordinateur que je veux emprunté est disponible ou non.
'
Quelques informations utiles je pense:
- Le bouton sera placé sur la Feuil1
- Les données à chercher sont dans les cellules H5 et D10 de la Feuil1 :
- H5 correspond au nom de l'ordinateur
- D10 correspond à la date d'emprunt
- La feuille dans laquelle les recherches seront effectuées est la Feuil3
'
Je souhaite faire une recherche dans les colonnes C et L de la Feuil3. En clair, si le nom de l'ordinateur se trouve dans la colonne C et la date d'emprunt se trouve dans la colonne L (les deux doivent être sur la même ligne pour que l'ordinateur soit disponible) je souhaite une MsgBox avec écrit " L'ordinateur est disponible" sinon (dans le cas où ça ne fonctionne pas), je souhaite une MsgBox avec écrit "L'ordinateur est indisponible, veuillez en choisir un autre!"
Sachant que je dispose d'un liste déroulante dans la cellule H5 avec différents noms d'ordinateurs.
'
Je ne peux malheureusement vous joindre le fichier, car il contient des données confidentielles.. Mais je vous donne cependant un morceau de code que j'ai trouvé sur le net (d'ailleurs merci à l'auteur ;) ) pour essayer mais il ne fonctionne pas..
'
'
Je vous remercie d'avance pour votre aide ;)
'
Je viens sur ce forum pour (je l'espère) que vous puissiez m'aider du mieux possible.
Alors voilà, je suis actuellement en train de mettre en place un outil de gestion de prêts de matériel sur Excel. J'ai déjà bien avancé sur le projet, mais il me manque une chose indispensable! Il me faut un bouton me permettant de savoir si l'ordinateur que je veux emprunté est disponible ou non.
'
Quelques informations utiles je pense:
- Le bouton sera placé sur la Feuil1
- Les données à chercher sont dans les cellules H5 et D10 de la Feuil1 :
- H5 correspond au nom de l'ordinateur
- D10 correspond à la date d'emprunt
- La feuille dans laquelle les recherches seront effectuées est la Feuil3
'
Je souhaite faire une recherche dans les colonnes C et L de la Feuil3. En clair, si le nom de l'ordinateur se trouve dans la colonne C et la date d'emprunt se trouve dans la colonne L (les deux doivent être sur la même ligne pour que l'ordinateur soit disponible) je souhaite une MsgBox avec écrit " L'ordinateur est disponible" sinon (dans le cas où ça ne fonctionne pas), je souhaite une MsgBox avec écrit "L'ordinateur est indisponible, veuillez en choisir un autre!"
Sachant que je dispose d'un liste déroulante dans la cellule H5 avec différents noms d'ordinateurs.
'
Je ne peux malheureusement vous joindre le fichier, car il contient des données confidentielles.. Mais je vous donne cependant un morceau de code que j'ai trouvé sur le net (d'ailleurs merci à l'auteur ;) ) pour essayer mais il ne fonctionne pas..
'
Sub Disponibilite()
Dim stC As String 'Valeur cherchée colonne C
Dim stL As String 'Valeur cherchée colonne L
Dim r As Range 'Ligne du tableau
stC = Feuil1.Range("H5").Value
stL = Feuil1.Range("D10").Value
For Each r In Worksheets("Feuil3").Range("A1").CurrentRegion.Rows
If r.Cells(3) = stC And r.Cells(12) = stL Then
MsgBox "L'ordinateur est indisponible, veuillez en choisir un autre!"
Exit For 'fin recherche
Else
MsgBox "L'ordinateur est disponible"
End If
Next
End Sub
'
Je vous remercie d'avance pour votre aide ;)
A voir également:
- Recherche sur 2 colonnes !
- Faire 2 colonnes sur word - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Inverser 2 colonnes excel - Guide
3 réponses
Bonjour
essayez ceci
Cdlt
essayez ceci
Option Compare Text
Sub Disponibilite()
Dim stC As String 'Valeur cherchée colonne C
Dim stL As String 'Valeur cherchée colonne L
Dim r As Range 'Ligne du tableau
stC = Feuil1.Range("H5").Value
stL = Feuil1.Range("D10").Value
With Sheets("feuil3").Range("C1:C" & [C1000].End(xlUp).Row)
Set x = .Find(stC, LookIn:=xlValues)
If Not x Is Nothing Then
DebX = x.Address
Do
If Cells(x.Row, 12) <> stL Then
Set x = .FindNext(x)
Else
MsgBox "L'ordinateur est disponible"
Exit Sub
End If
Loop While Not x Is Nothing And x.Address <> DebX
End If
End With
MsgBox "L'ordinateur est indisponible, veuillez en choisir un autre!"
End Sub
Cdlt
Bonjour
Voilà
Cdlt
Voilà
Option Compare Text
Sub Disponibilite()
Dim stC As String 'Valeur cherchée colonne C
Dim stL As String 'Valeur cherchée colonne L
Dim r As Range 'Ligne du tableau
stC = Feuil1.Range("H5").Value
stL = Feuil1.Range("D10").Value
Sheets("Feuil3").Select
With Range("C2:C" & [C1000].End(xlUp).Row)
Set x = .Find(stC, LookIn:=xlValues)
If Not x Is Nothing Then
DebX = x.Address
Do
If Cells(x.Row, 12) <> stL Then
Set x = .FindNext(x)
Else
MsgBox "L'ordinateur est disponible"
Sheets("Feuil1").Select
Exit Sub
End If
Loop While Not x Is Nothing And x.Address <> DebX
End If
End With
MsgBox "L'ordinateur est indisponible, veuillez en choisir un autre!"
Sheets("Feuil1").Select
End Sub
Cdlt
Re-bonjour,
Je viens d'essayer votre code , j'ai du modifier 3 choses, les redirections vers les différentes feuilles, à la place de Sheets("Feuil3").Select par exemple, j'ai du mettre Worksheets("Liste des emprunts").Select !
Mais le code à l'air de bien fonctionner , je vais un peu remplir le document et voir si le code fonctionne, je vous tiens au courant au plus vite.
Cordialement, TFM
Je viens d'essayer votre code , j'ai du modifier 3 choses, les redirections vers les différentes feuilles, à la place de Sheets("Feuil3").Select par exemple, j'ai du mettre Worksheets("Liste des emprunts").Select !
Mais le code à l'air de bien fonctionner , je vais un peu remplir le document et voir si le code fonctionne, je vous tiens au courant au plus vite.
Cordialement, TFM
Je viens d'essayer et je crois que le code ne tient pas compte de la date de retour de la ligne renseignée dans la Feuil3, car quand je crée un enregistrement avec un nom d'ordinateur et une date de retour au 21/06/2016 par exemple, quand je recrée un enregistrement avec le même nom d'ordinateur et que je met la date d'emprunt = la date de retour de l'enregistrement d'avant, cela doit me dire que l'ordinateur est disponible, or il me dit le contraire peu importe la date d'emprunt que je rentre...
Cordialement
Cordialement
Bonjour, je vais essayer de m'expliquer pour que vous puissiez me comprendre du mieux possible.
'
Imaginons que je rentre <<DELL 98>> dans la cellule H5 (qui correspond au nom de l'ordinateur) de la feuil1.
Une fois que l'enregistrement est effectué, cette valeur se retrouvera dans une des cellules de la colonne C de la feuil3.
Il faut également savoir qu'avant l'enregistrement , la date d'emprunt est entrée dans la cellule D10 de la feuil1 et la date de retour est entrée dans la cellule D11 de la même feuille.
APRES l'enregistrement :
- la date d'emprunt va se trouver sur la même ligne que <<DELL 98>> mais dans la colonne K de la feuil3
- la date de retour va aussi se trouver sur la même ligne mais dans la colonne L de la feuil3.
Imaginons qu'on prenne 14/06/2016 comme date d'emprunt et 21/06/2016 comme date de retour et qu'on enregistre.
'
Après cela on fait un nouvel enregistrement avec comme nom d'ordinateur <<DELL 98>> ,
comme date d'emprunt 21/06/2016 et comme date de retour 28/06/2016.
En appuyant sur mon bouton il doit m'afficher <<L'ordinateur est disponible>> puisque la date d'emprunt est <= à la date de retour de l'enregistrement précédent.
Dans tous les autres cas , il doit m'afficher << L'ordinateur est déjà emprunté>>
Vous voyez ce que je veux dire?
Si vous avez besoin de plus d'explications, dites le moi!
Cordialement
'
Imaginons que je rentre <<DELL 98>> dans la cellule H5 (qui correspond au nom de l'ordinateur) de la feuil1.
Une fois que l'enregistrement est effectué, cette valeur se retrouvera dans une des cellules de la colonne C de la feuil3.
Il faut également savoir qu'avant l'enregistrement , la date d'emprunt est entrée dans la cellule D10 de la feuil1 et la date de retour est entrée dans la cellule D11 de la même feuille.
APRES l'enregistrement :
- la date d'emprunt va se trouver sur la même ligne que <<DELL 98>> mais dans la colonne K de la feuil3
- la date de retour va aussi se trouver sur la même ligne mais dans la colonne L de la feuil3.
Imaginons qu'on prenne 14/06/2016 comme date d'emprunt et 21/06/2016 comme date de retour et qu'on enregistre.
'
Après cela on fait un nouvel enregistrement avec comme nom d'ordinateur <<DELL 98>> ,
comme date d'emprunt 21/06/2016 et comme date de retour 28/06/2016.
En appuyant sur mon bouton il doit m'afficher <<L'ordinateur est disponible>> puisque la date d'emprunt est <= à la date de retour de l'enregistrement précédent.
Dans tous les autres cas , il doit m'afficher << L'ordinateur est déjà emprunté>>
Vous voyez ce que je veux dire?
Si vous avez besoin de plus d'explications, dites le moi!
Cordialement
bonjour
j'avais commencé à regarder avant tes derniers messages
si nom ordi est unique, pas besoin de boucles...
Concernant tes derniers messages:au besoin, mets ton classeur en pJ
pour cela:
Dans l’attente
Edit 9:32h complété code
Michel
j'avais commencé à regarder avant tes derniers messages
si nom ordi est unique, pas besoin de boucles...
Sub Disponibilite()
Dim stC As String 'Valeur cherchée colonne C
Dim stL As String 'Valeur cherchée colonne L
Dim r As Range 'Ligne du tableau
With Sheets("feuil1")
stC = .Range("H5")
stL = .Range("D10")
End With
With Sheets("feuil3")
r = .Columns(3).Find(what:=stC, after:=.Range("C1")).Row
If .Cells(r, 12) = stL Then
MsgBox "L'ordinateur est indisponible, veuillez en choisir un autre!"
Else
MsgBox "L'ordinateur est disponible"
End If
End With
End Sub
Concernant tes derniers messages:au besoin, mets ton classeur en pJ
pour cela:
Mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le raccourci par un clic droit sur le lien proposé dans le message de réponse
Dans l’attente
Edit 9:32h complété code
Michel
Bonjour,
Merci beaucoup pour votre réponse, cependant le nom de l'ordi n'est pas unique justement, je dispose d'une liste déroulante avec 15 noms différents mais je vais essayer votre code et vous tiens au courant le plus rapidement possible!
Si ça ne fonctionne pas, j'essaierai de vous joindre le fichier!
Cordialement,
Merci beaucoup pour votre réponse, cependant le nom de l'ordi n'est pas unique justement, je dispose d'une liste déroulante avec 15 noms différents mais je vais essayer votre code et vous tiens au courant le plus rapidement possible!
Si ça ne fonctionne pas, j'essaierai de vous joindre le fichier!
Cordialement,
Si justement je connais tout de l'ordi , c'est juste que lorsque je crée un nouvel enregistrement, je choisi un ordi parmis la liste et ensuite je veux cliquer sur le bouton "Vérifier" pour me permettre de savoir s'il est disponible ou non en fonction du nom de l'ordi et de la date d'emprunt. Tu vois ce que je veux dire?
J'ai vu tes modifs je les avait déjà faites mais merci quand même ;)
J'ai vu tes modifs je les avait déjà faites mais merci quand même ;)
J'ai apporté quelques modifications au code , cependant il me dit qu'il y a une erreur de compatibilité de type :/
Sub Disponibilite()
Dim stC As String 'Valeur cherchée colonne C
Dim stL As String 'Valeur cherchée colonne L
Dim r As Range 'Ligne du tableau
Dim PlageDeRecherche As Range
Set PlageDeRecherche = Sheets(3).Columns(3)
stC = Feuil1.Range("H5").Value
stL = Feuil1.Range("D10").Value
Set r = PlageDeRecherche.cells.Find(what:=stC, after:=Sheets(3).Range("C1")).Rows
If Sheets(3).cells(r, 12) = stL Then <-- problème à cette ligne
MsgBox "L'ordinateur est indisponible, veuillez en choisir un autre!"
Else
MsgBox "L'ordinateur est disponible"
End If
End Sub
Cordialement, TFM
With Sheets("Feuil3").Range("C2:C" & [C1000].End(xlUp).Row)
Où il m'indique "l'indice ne fait pas partie de la sélection", j'ai changé C1 par C2 car mes lignes où sont renseignées les valeurs commencent à partir de la ligne 2 , mais rien ne change.. Pouvez-vous m'aider sur ce point? En tout cas le reste du code semble fonctionner.
Cordialement, TFM