Fanction imputbox
Résolu/Fermé
mchotard
Messages postés
434
Date d'inscription
vendredi 6 mai 2011
Statut
Membre
Dernière intervention
16 janvier 2025
-
12 déc. 2020 à 15:08
mchotard Messages postés 434 Date d'inscription vendredi 6 mai 2011 Statut Membre Dernière intervention 16 janvier 2025 - 28 déc. 2020 à 12:07
mchotard Messages postés 434 Date d'inscription vendredi 6 mai 2011 Statut Membre Dernière intervention 16 janvier 2025 - 28 déc. 2020 à 12:07
6 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié le 12 déc. 2020 à 15:59
Modifié le 12 déc. 2020 à 15:59
Bonjour,
Avec VBA, il faut éviter d'utiliser .Select et Selection, et plus généralement les objets actifs implicites :
Avec VBA, il faut éviter d'utiliser .Select et Selection, et plus généralement les objets actifs implicites :
Option Explicit Sub Filtreb() Dim nomPdt As Variant With Worksheets("Feuil1") ' adapter le nom de la feuille ' s'il y a déjà un filtre sur la feuille, le supprimer If Not .AutoFilter Is Nothing Then .AutoFilter.Range.AutoFilter With .Range("A1").CurrentRegion ' ajouter un filtre automatique sur la plage des données .AutoFilter ' demander le nom à filtrer nomPdt = Application.InputBox(Prompt:="Quel nom ?", Type:=2) If Not nomPdt = False Then ' filtrer la colonne 3 sur le nom saisi .AutoFilter Field:=3, Criteria1:="=*" & nomPdt & "*" End If End With End With End Sub
mchotard
Messages postés
434
Date d'inscription
vendredi 6 mai 2011
Statut
Membre
Dernière intervention
16 janvier 2025
39
12 déc. 2020 à 17:59
12 déc. 2020 à 17:59
Merci Patrice 33740
Je viens d'essayer et cela fonctionne bien. Je suis très heureux. Que serai-je sans vous les amis du forum.
Très cordialement
Bonne fête de fins d'années même en cette période.
Je viens d'essayer et cela fonctionne bien. Je suis très heureux. Que serai-je sans vous les amis du forum.
Très cordialement
Bonne fête de fins d'années même en cette période.
mchotard
Messages postés
434
Date d'inscription
vendredi 6 mai 2011
Statut
Membre
Dernière intervention
16 janvier 2025
39
27 déc. 2020 à 16:44
27 déc. 2020 à 16:44
Bonjour Patrice
Je reviens vers toi pour cette macro qui fonctionne très bien. Je voudrais l'adapter pour faire des recherches non plus par nom, mais par N° de téléphone. Ceux ci se trouve en colonne P de mon tableau et sont au format - "spécial - numéro de téléphone". Peux-tu encore m'aider.
Je te remercie à l'avance
Je reviens vers toi pour cette macro qui fonctionne très bien. Je voudrais l'adapter pour faire des recherches non plus par nom, mais par N° de téléphone. Ceux ci se trouve en colonne P de mon tableau et sont au format - "spécial - numéro de téléphone". Peux-tu encore m'aider.
Je te remercie à l'avance
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
27 déc. 2020 à 23:17
27 déc. 2020 à 23:17
Bonjour,
Le format "spécial - numéro de téléphone" ne permet pas d'effectuer de recherche de la même façon. Les numéros sont mémorisés en temps que nombre, c'est-à-dire sans espace et sans 0 devant.
Tu dois utiliser le format texte.
Une petite macro pour convertir tous les numéros au format texte :
Et ensuite la macro pour rechercher :
Le format "spécial - numéro de téléphone" ne permet pas d'effectuer de recherche de la même façon. Les numéros sont mémorisés en temps que nombre, c'est-à-dire sans espace et sans 0 devant.
Tu dois utiliser le format texte.
Une petite macro pour convertir tous les numéros au format texte :
Sub convNumTel() ' Convertit les numéros de téléphone en chaine de caractères Dim c As Range Application.ScreenUpdating = False With Worksheets("Feuil1").Range("A1").CurrentRegion.Columns("P") .NumberFormat = "@" For Each c In .Cells c.Formula = c.Text Next c End With End Sub
Et ensuite la macro pour rechercher :
Option Explicit Sub FiltreP() Dim numero As Variant With Worksheets("Feuil1") ' adapter le nom de la feuille ' s'il y a déjà un filtre sur la feuille, le supprimer If Not .AutoFilter Is Nothing Then .AutoFilter.Range.AutoFilter With .Range("A1").CurrentRegion ' ajouter un filtre automatique sur la plage des données .AutoFilter ' demander le numéro à filtrer numero = Application.InputBox(Prompt:="Quel numéro de téléphone ?", Type:=2) If Not numero = False Then ' filtrer la colonne 16 sur le numéro saisi .AutoFilter Field:=16, Criteria1:="=*" & numero & "*" End If End With End With End Sub
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
27 déc. 2020 à 23:48
27 déc. 2020 à 23:48
Et si ne veux pas saisir les espaces dans les numéros à chercher :
Sub FiltreP() Dim numero As Variant, n As Variant, i As Integer With Worksheets("Feuil1") ' adapter le nom de la feuille ' s'il y a déjà un filtre sur la feuille, le supprimer If Not .AutoFilter Is Nothing Then .AutoFilter.Range.AutoFilter With .Range("A1").CurrentRegion ' ajouter un filtre automatique sur la plage des données .AutoFilter ' demander le nom à filtrer numero = Application.InputBox(Prompt:="Quel numéro de téléphone ?", Type:=2) If Not numero = False Then If numero = Replace(numero, " ", "") Then 'espaces non saisis i = 2 Do While i < Len(numero) numero = Left(numero, i) & " " & Mid(numero, i + 1) i = i + 3 Loop End If ' filtrer la colonne 3 sur le numero saisi .AutoFilter Field:=16, Criteria1:="=*" & numero & "*" End If End With End With End Sub
mchotard
Messages postés
434
Date d'inscription
vendredi 6 mai 2011
Statut
Membre
Dernière intervention
16 janvier 2025
39
>
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
28 déc. 2020 à 09:21
28 déc. 2020 à 09:21
A nouveau un cordial merci, je me doutais que c'était un problème de format, mais je n'arrivais pas à résoudre mon problème, c'est super sympa.
meilleurs vœux 2021 et sans masque si possible
A+
meilleurs vœux 2021 et sans masque si possible
A+
mchotard
Messages postés
434
Date d'inscription
vendredi 6 mai 2011
Statut
Membre
Dernière intervention
16 janvier 2025
39
>
mchotard
Messages postés
434
Date d'inscription
vendredi 6 mai 2011
Statut
Membre
Dernière intervention
16 janvier 2025
28 déc. 2020 à 10:12
28 déc. 2020 à 10:12
Patrice,
Je viens de mettre en place ta macro sans espace. Dans la colonne Z j'ai copier les numéro de téléphone de la colonne "P" en les mettant au format texte. Le 06 80 50 60 70 devient donc 680506070
Quand j'utilise la macro il ne trouve aucune correspondance
Il y a quelques choses que je loupe
merci
Sub FiltreSansEspace()
Dim numero As Variant, n As Variant, i As Integer
Sheets("Nouveau").Select
With Worksheets("Nouveau") ' adapter le nom de la feuille
' s'il y a déjà un filtre sur la feuille, le supprimer
If Not .AutoFilter Is Nothing Then .AutoFilter.Range.AutoFilter
With .Range("Z1").CurrentRegion
' ajouter un filtre automatique sur la plage des données
.AutoFilter
' demander le nom à filtrer
numero = Application.InputBox(Prompt:="Quel numéro de téléphone ?", Type:=2)
If Not numero = False Then
If numero = Replace(numero, " ", "") Then 'espaces non saisis
i = 2
Do While i < Len(numero)
numero = Left(numero, i) & " " & Mid(numero, i + 1)
i = i + 3
Loop
End If
' filtrer la colonne 3 sur le numero saisi
.AutoFilter Field:=26, Criteria1:="=*" & numero & "*"
End If
End With
End With
End Sub
Je viens de mettre en place ta macro sans espace. Dans la colonne Z j'ai copier les numéro de téléphone de la colonne "P" en les mettant au format texte. Le 06 80 50 60 70 devient donc 680506070
Quand j'utilise la macro il ne trouve aucune correspondance
Il y a quelques choses que je loupe
merci
Sub FiltreSansEspace()
Dim numero As Variant, n As Variant, i As Integer
Sheets("Nouveau").Select
With Worksheets("Nouveau") ' adapter le nom de la feuille
' s'il y a déjà un filtre sur la feuille, le supprimer
If Not .AutoFilter Is Nothing Then .AutoFilter.Range.AutoFilter
With .Range("Z1").CurrentRegion
' ajouter un filtre automatique sur la plage des données
.AutoFilter
' demander le nom à filtrer
numero = Application.InputBox(Prompt:="Quel numéro de téléphone ?", Type:=2)
If Not numero = False Then
If numero = Replace(numero, " ", "") Then 'espaces non saisis
i = 2
Do While i < Len(numero)
numero = Left(numero, i) & " " & Mid(numero, i + 1)
i = i + 3
Loop
End If
' filtrer la colonne 3 sur le numero saisi
.AutoFilter Field:=26, Criteria1:="=*" & numero & "*"
End If
End With
End With
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié le 28 déc. 2020 à 11:10
Modifié le 28 déc. 2020 à 11:10
Re,
« Dans la colonne Z j'ai copier les numéro de téléphone de la colonne "P" en les mettant au format texte. Le 06 80 50 60 70 devient donc 680506070 ... Il y a quelques choses que je loupe »
Effectivement, tu loupes quelque chose, comme expliqué précédemment, les valeurs de la colonne P au format "spécial - numéro de téléphone" sont des nombres.
Le format de cellule n'est qu'un artifice d'affichage que ne modifie pas le nombre 680506070.
Avec Excel lorsqu'on copie / colle des valeurs, leur type est conservé, c'est-à-dire que dans ton cas, cela reste des nombres : le fait d'utiliser un autre format de cellule ne modifie pas ces valeurs (et c'est heureux comme ça). Un format de cellule n'agit que sur les nouvelles valeurs saisies (pas copiées).
Dans une cellule au format texte, si tu saisis 06 80 50 60 70, ça reste 06 80 50 60 70.
C'est pour cela que je t'ai fourni au post #4 une macro pour convertir les numéros de téléphone au format numérique "spécial - numéro de téléphone" en numéro de téléphone au format texte (avec les espaces et les 0 devant).
Pour l'utiliser sur la colonne Z, il faut copie/coller les valeurs et les formats des nombres de la colonne P (et dans le code de la macro remplacer "P" par "Z").
Je ne sais pas quelle mouche a piqué les concepteurs de chez Microsoft lorsqu'ils ont créé tous ces formats numériques spéciaux (code postal, sécurité sociale, téléphone, ...) mais c'est une énorme aberration, un leurre: par définition, numéro qui s'écrit différemment d'un nombre est un texte composé d'une série de chiffres.
« Dans la colonne Z j'ai copier les numéro de téléphone de la colonne "P" en les mettant au format texte. Le 06 80 50 60 70 devient donc 680506070 ... Il y a quelques choses que je loupe »
Effectivement, tu loupes quelque chose, comme expliqué précédemment, les valeurs de la colonne P au format "spécial - numéro de téléphone" sont des nombres.
Le format de cellule n'est qu'un artifice d'affichage que ne modifie pas le nombre 680506070.
Avec Excel lorsqu'on copie / colle des valeurs, leur type est conservé, c'est-à-dire que dans ton cas, cela reste des nombres : le fait d'utiliser un autre format de cellule ne modifie pas ces valeurs (et c'est heureux comme ça). Un format de cellule n'agit que sur les nouvelles valeurs saisies (pas copiées).
Dans une cellule au format texte, si tu saisis 06 80 50 60 70, ça reste 06 80 50 60 70.
C'est pour cela que je t'ai fourni au post #4 une macro pour convertir les numéros de téléphone au format numérique "spécial - numéro de téléphone" en numéro de téléphone au format texte (avec les espaces et les 0 devant).
Pour l'utiliser sur la colonne Z, il faut copie/coller les valeurs et les formats des nombres de la colonne P (et dans le code de la macro remplacer "P" par "Z").
Je ne sais pas quelle mouche a piqué les concepteurs de chez Microsoft lorsqu'ils ont créé tous ces formats numériques spéciaux (code postal, sécurité sociale, téléphone, ...) mais c'est une énorme aberration, un leurre: par définition, numéro qui s'écrit différemment d'un nombre est un texte composé d'une série de chiffres.
mchotard
Messages postés
434
Date d'inscription
vendredi 6 mai 2011
Statut
Membre
Dernière intervention
16 janvier 2025
39
28 déc. 2020 à 12:07
28 déc. 2020 à 12:07
parfait, ça marche. Je suis très satisfait e ton aide.
Merci pour ta patience
Très cordialement
Mchotard
Merci pour ta patience
Très cordialement
Mchotard