Recherche sur 2 colonnes !
Fermé
TFM
-
Modifié par TFM le 13/06/2016 à 15:41
TFM67 Messages postés 6 Date d'inscription mardi 14 juin 2016 Statut Membre Dernière intervention 15 juin 2016 - 15 juin 2016 à 11:00
TFM67 Messages postés 6 Date d'inscription mardi 14 juin 2016 Statut Membre Dernière intervention 15 juin 2016 - 15 juin 2016 à 11:00
A voir également:
- Recherche sur 2 colonnes !
- Faire 2 colonnes sur word - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Fusionner 2 colonnes excel - Guide
- 2 ecran pc - Guide
3 réponses
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
13 juin 2016 à 19:20
13 juin 2016 à 19:20
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
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
14 juin 2016 à 08:53
14 juin 2016 à 08:53
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
TFM67
Messages postés
6
Date d'inscription
mardi 14 juin 2016
Statut
Membre
Dernière intervention
15 juin 2016
14 juin 2016 à 11:35
14 juin 2016 à 11:35
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 15/06/2016 à 09:31
Modifié par michel_m le 15/06/2016 à 09:31
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
TFM67
Messages postés
6
Date d'inscription
mardi 14 juin 2016
Statut
Membre
Dernière intervention
15 juin 2016
15 juin 2016 à 09:29
15 juin 2016 à 09:29
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,
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
>
TFM67
Messages postés
6
Date d'inscription
mardi 14 juin 2016
Statut
Membre
Dernière intervention
15 juin 2016
Modifié par michel_m le 15/06/2016 à 09:35
Modifié par michel_m le 15/06/2016 à 09:35
cependant le nom de l'ordi n'est pas unique justement, je dispose d'une liste déroulante avec 15 noms différents
Aie!!!
donc, tu connais le type d'ordi mais pas le numéro de l'ordi emprunté: comment fais tu pour connaitre l'état de tes ordi ?
mon message précédent actualisé à 9:32h
Aie!!!
donc, tu connais le type d'ordi mais pas le numéro de l'ordi emprunté: comment fais tu pour connaitre l'état de tes ordi ?
mon message précédent actualisé à 9:32h
TFM67
Messages postés
6
Date d'inscription
mardi 14 juin 2016
Statut
Membre
Dernière intervention
15 juin 2016
15 juin 2016 à 09:38
15 juin 2016 à 09:38
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 ;)
TFM67
Messages postés
6
Date d'inscription
mardi 14 juin 2016
Statut
Membre
Dernière intervention
15 juin 2016
15 juin 2016 à 10:17
15 juin 2016 à 10:17
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
>
TFM67
Messages postés
6
Date d'inscription
mardi 14 juin 2016
Statut
Membre
Dernière intervention
15 juin 2016
15 juin 2016 à 10:31
15 juin 2016 à 10:31
Dim r As Range 'Ligne du tableau
....
Set r = PlageDeRecherche.cells.Find(what:=stC, after:=Sheets(3).Range("C1")).Rows
ne prends pas ca mal mais c'est n'importe quoi !
Je laisse tomber
....
Set r = PlageDeRecherche.cells.Find(what:=stC, after:=Sheets(3).Range("C1")).Rows
ne prends pas ca mal mais c'est n'importe quoi !
Je laisse tomber
14 juin 2016 à 08:28
Cordialement, TFM
14 juin 2016 à 08:40
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