IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Sélection sur une partie de la valeur avec InputBox [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 100
    Par défaut Sélection sur une partie de la valeur avec InputBox
    Bonjour à Tous,
    La feuille sur laquelle je souhaite faire fonctionner cette macro se compose ainsi
    L1 à 10 : Texte de présentation
    L11 : Titre de mes colonnes A à M
    En colonne C le titre est "CODE POSTAL"
    La plage sur laquelle cette macro doit fonctionner est A12:M2012
    La macro ci-dessous fonctionne très bien si on donne à InputBox ex: 75001 ou 45100.
    Je voudrais pouvoir ne saisir que le numéro du département ex: 75 ou 45 et ensuite avoir le même scénario.
    Merci de votre aide
    Lenul

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Sub SelectionCode()
    Application.ScreenUpdating = False
    Dim SelectionCode
    Dim Colonne As Range
    Dim LastLig As Long
     
    With Sheets("Prospects")
        SelectionCode = InputBox("Entrez le CODE POSTAL")
        If SelectionCode <> "" Then
            LastLig = .Cells(Rows.Count, "C").End(xlUp).Row
            Set Colonne = .Range("C12:C" & LastLig).Find(What:=SelectionCode, LookIn:=xlValues, lookat:=xlWhole)
            If Colonne Is Nothing Then
                MsgBox "désolé ce CODE n'existe pas"
            Else
                With .Range("C11:C" & LastLig)
                    .AutoFilter
                    .AutoFilter field:=1, Criteria1:=SelectionCode
                End With
                OuvrirExtrait
                .Range("A12:M" & LastLig).SpecialCells(xlCellTypeVisible).Copy Sheets("Extrait").Range("A12")
                .Range("C11:C" & LastLig).AutoFilter
                End If
            Set Colonne = Nothing
        End If
    End With
    Range("a11").Select
    Sheets("Extrait").Select
    Range("a11").Select
    Application.ScreenUpdating = True
    End Sub

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Sub Selektion2()
    Dim SelectionType
    Dim Trouve As Boolean
    Dim LastLig As Long, NewLig As Long
     
    With Sheets("Prospects")
        SelectionType = InputBox("Entrez le CODE")
        If SelectionType <> "" Then
            SelectionType = SelectionType & "*"
            .Cells.AutoFilter
            LastLig = .Cells(Rows.Count, "L").End(xlUp).Row
            .Range("A11:L" & LastLig).AutoFilter field:=12, Criteria1:=SelectionType
            Trouve = False
            On Error Resume Next
            If .Range("L11:L" & LastLig).SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then Trouve = True
            If Trouve Then
                NewLig = Sheets("Recap").Cells(Rows.Count, "L").End(xlUp).Row + 1
                .Range("A12:M" & LastLig).SpecialCells(xlCellTypeVisible).Copy Sheets("Recap").Range("A" & NewLig)
            Else
                MsgBox "désolé ce TYPE n'existe pas"
            End If
            .Range("A11:L" & LastLig).AutoFilter
        End If
    End With
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 100
    Par défaut
    Bonjour,
    je reviens vers Toi car après avoir adapté ton code à ma feuille "Prospects", celui-ci ce déroule sans message d'erreur mais aucune sélection n'est copiée sur la feuille "Extrait".
    J'ai essayé des modif mais sa plante à chaque fois..... Et oui je suis NUL
    Pour mémoire la constitution de "Prospects" :
    A1 à M10 : Texte de présentation
    Ligne11 : Titre de mes colonnes A à M
    En colonne C le titre est "CODE POSTAL" format "code postal" (pour le test, j'ai dans cette colonne c12=75001;c13=75100;c14=92500 et c15=15230)
    La plage sur laquelle cette macro doit fonctionner est A12:M2012
    But de la macro: sélectionner les lignes qui dans la colonne "CODE POSTAL" ont les 2 premiers chiffres = à la saisie de InputBox ensuite copier ces lignes sur une feuille nommée "Extrait".
    Voici ton code modifié avec les bonnes colonnes:
    Merci de ton aide
    Lenul

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Sub Selektion2()
    Dim SelectionDept
    Dim Trouve As Boolean
    Dim LastLig As Long, NewLig As Long
     
    With Sheets("Prospects")
        SelectionDept = InputBox("Entrez le numéro de Département")
        If SelectionDept <> "" Then
            SelectionDept = SelectionDept & "*"
            .Cells.AutoFilter
            LastLig = .Cells(Rows.Count, "C").End(xlUp).Row
            .Range("A11:L" & LastLig).AutoFilter field:=3, Criteria1:=SelectionDept
            Trouve = False
            On Error Resume Next
            If .Range("C11:C" & LastLig).SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then Trouve = True
            If Trouve Then
                NewLig = Sheets("Extrait").Cells(Rows.Count, "C").End(xlUp).Row + 1
                .Range("A12:M" & LastLig).SpecialCells(xlCellTypeVisible).Copy Sheets("Extrait").Range("A" & NewLig)
            Else
                MsgBox "désolé ce DEPARTEMENT n'existe pas"
            End If
            .Range("A11:L" & LastLig).AutoFilter
        End If
    End With

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Les codes postaux sont interprétés comme des nombres.
    j'ai modifié le code. j'avoue que ce n'est pas peut être la meilleure méthode
    ci-joint code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Dim SelectionDept
    Dim vCel As Range
    Dim Trouve As Boolean
    Dim LastLig As Long, NewLig As Long
     
    With Sheets("Prospects")
        SelectionDept = InputBox("Entrez le numéro de Département")
        If SelectionDept <> "" Then
            SelectionDept = CStr(SelectionDept) & "*"
            .Range("A11:L11").AutoFilter
            LastLig = .Cells(Rows.Count, "C").End(xlUp).Row
            If LastLig > 11 Then
                For Each vCel In .Range("C12:C" & LastLig)  'on modifie le type du contenu de la colonne C
                    vCel.Value = CStr(vCel.Value)
                Next vCel
            End If
            .Range("A11:L" & LastLig).AutoFilter field:=3, Criteria1:=SelectionDept
            Trouve = False
            On Error Resume Next
            If .Range("C11:C" & LastLig).SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then Trouve = True
            If Trouve Then
                NewLig = Sheets("Extrait").Cells(Rows.Count, "C").End(xlUp).Row + 1
                .Range("A12:M" & LastLig).SpecialCells(xlCellTypeVisible).Copy Sheets("Extrait").Range("A" & NewLig)
            Else
                MsgBox "désolé ce DEPARTEMENT n'existe pas"
            End If
            .Range("A11:L" & LastLig).AutoFilter
        End If
    End With
    End Sub

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 100
    Par défaut
    Re,
    J'ai testé ton code mais avec la saisie soit de 75, 92 ou 15 la macro me renvoi le message que ce département n'existe pas !
    Je vois pas ou est l'erreur
    Lenul

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    J'ai testé sur un fichier test avant de poster
    ci-joint. à adapter à ta feuille

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. moyenne d'une variable sur une partie des valeurs
    Par DiverSIG dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/09/2009, 22h19
  2. Réponses: 6
    Dernier message: 24/11/2008, 14h01
  3. Gourp by sur une partie d'une valeur d'un champ
    Par threshold dans le forum Requêtes
    Réponses: 1
    Dernier message: 13/11/2007, 08h40
  4. Requete avec condition sur une partie de l'affichage
    Par dinver78 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/07/2007, 09h19
  5. PB, liens et sélections inactifs sur une partie de la page
    Par FamiDoo dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 29/04/2007, 10h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo