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 :

Active la cellule pour une valeur donnée par inputbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut Active la cellule pour une valeur donnée par inputbox
    Bonjour,
    Je souhaiterais trouver un code vba pour que je puisse entrer une valeur par inptubox, le code testerait les cellules de $A$1: à A200 et si la valeur de la cellule correspond à la valeur de l'inputbox, ce code sélectionnerait la cellule dans laquelle cette valeur se trouve.

    sur cette feuille de calculs, j'ai déjà un code événementiel qui lance une macro si la valeur d'une cellule comprise entre $C$2 et M200 = X.

    Le souci est que le code tourne très bien pour sa seconde partie mais je teste une cellule extérieure à la plage $C$2 et M200 = X, il plante:

    "Variable objet ou variable de bloc non définie"
    Avec la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Intersect(ActiveCell, Range("$C$2:M200")) = "X" Then
    sur lignée.

    Le 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
        'On Error Resume Next
     
        If Intersect(ActiveCell, Range("$C$2:M200")) = "X" Then
     
     
        ActiveWorkbook.Save
     
     
         If MsgBox("Lancer clôture fichiers pdf", vbYesNo, "Demande de confirmation") = vbYes Then
     
        Application.Run ("TestListeFichiers")
     
        Else
        Exit Sub
     
        End If
        Else
        Exit Sub
        End If
     
        Dim Lig As Long, Nom As String
     
      If Intersect(ActiveCell, Range("$A$1:A200")) <> "" Then
     
    Nom = InputBox("Saisie de votre NOM Prénom : ", "NOM Prénom")
     
    Set Plage = Range("A2:A150")
        For Each Cel In Plage
            If Cel = Nom Then
                Lig = ActiveCell.Row
     
                Range("" & "A" & Lig & "").Activate
                Exit Sub
            End If
        Next Cel
     
      End If
        End Sub
    Si quelqu'un y voit plus clair que moi, merci beaucoup

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Avec ça, plus de plantage mais après avoir renseigné mon inptubox, rien ne se passe:

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
     
     
     
        If Intersect(ActiveCell, Range("$C$2:M200")) = "X" Then
     
     
        ActiveWorkbook.Save
     
     
         If MsgBox("Lancer clôture fichiers pdf", vbYesNo, "Demande de confirmation") = vbYes Then
     
        Application.Run ("TestListeFichiers")
        Else
       ActiveCell.Offset(1, 0).Activate
     
     
        Exit Sub
     
        End If
        Else
        Exit Sub
        End If
     End Sub
     
       Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Target.Address = "$A$1" Then
     
     
      Dim Lig As Long, Nom As String
     
    Nom = InputBox("Saisie de votre NOM : ", "NOM")
     
    Set Plage = Range("A2:A150")
        For Each Cel In Plage
            If Cel = Nom Then
                Lig = ActiveCell.Row
     
                Range("" & "A" & Lig & "").Activate
                Exit Sub
            End If
        Next Cel
     
      End If
        End Sub

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    J'ai trouvé ça qui est pas mal du tout:

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
     
     
     
        If Intersect(ActiveCell, Range("$C$2:M200")) = "X" Then
     
     
        ActiveWorkbook.Save
     
     
         If MsgBox("Lancer clôture fichiers pdf", vbYesNo, "Demande de confirmation") = vbYes Then
     
        Application.Run ("TestListeFichiers")
        Else
       ActiveCell.Offset(1, 0).Activate
     
     
        Exit Sub
     
        End If
        Else
        Exit Sub
        End If
     End Sub
     
       Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Target.Address = "$A$1" Then
     
     
      Dim Lig As Long, Nom As String
     
    Nom = InputBox("Saisie de votre NOM : ", "NOM")
     
    Dim cel As Range
    Do
        Set cel = Cells.Find(What:="" & Nom & "", LookAt:=xlWhole)
        If Not cel Is Nothing Then cel.Activate
    Loop While Not cel Is Nothing
    Exit Sub
      End If
        End Sub

    Dernier point, j'ai l'impression que la boucle est un peu longue avant que je ne reprenne la main, limiter la zone de recherche de A2 à A200 serait-ce la solution? Par LookAt?

    Comment gérer le cas où Nom n'apparaît pas dans ma colonne (A2:A200) pour arrêter la boucle?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Ce sujet n'est pas source d'inspiration.
    J'ai avancé encore un peu.

    J'arrive à trouver ma cellule dans ma colonne puis à déplacer mon curseur dans la ligne correspondante mais, la première reste active et excel continue à me demander le mois alors même que la cellule correspondante est active, je remarque juste que la cellule Ax l'est encore aussi???

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
     
     
     
        If Intersect(ActiveCell, Range("$C$2:M200")) = "X" Then
     
     
        ActiveWorkbook.Save
     
     
         If MsgBox("Lancer clôture fichiers pdf", vbYesNo, "Demande de confirmation") = vbYes Then
     
        Application.Run ("TestListeFichiers")
        Else
       ActiveCell.Offset(1, 0).Activate
     
     
        Exit Sub
     
        End If
        Else
        Exit Sub
        End If
     End Sub
     
       Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Target.Address = "$A$1" Then
     
     
      Dim Lig As Long, Nom As String, Lign As Long
     
    Nom = InputBox("Saisie de votre NOM : ", "NOM")
     
    Dim cel As Range
    Do
        Set cel = Sheets("SAISIES").Range("A2:A200").Find(What:="" & Nom & "", LookAt:=xlWhole, SearchOrder:=xlByColumns)
        If Not cel Is Nothing Then cel.Activate
    Loop While Not cel Is Nothing
     
     
      End If
      Dim mois As Long
      Lign = ActiveCell.Row
    If Target.Address = "$A$" & Lign Then
     
      mois = InputBox("Saisie le mois :  " & vbCrLf & "1 = Septembre  " & vbCrLf & "2 = Octobre  " & vbCrLf & "3 = Novembre  " & vbCrLf & "4 = Décembre  " & vbCrLf & "5 = Janvier  " & vbCrLf & "6 = Février  " & vbCrLf & "7 = Mars  " & vbCrLf & "8 = Avril  " & vbCrLf & "9 = Mai  " & vbCrLf & "10 = Juin  " & vbCrLf & "11 = Juillet", "mois")
     
      ActiveCell.Offset(0, mois).Activate
      Exit Sub
      Else
      Exit Sub
      End If
     
     
     
     
        End Sub
    Ca se passe ici

    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
     Dim mois As Long
      Lign = ActiveCell.Row
    If Target.Address = "$A$" & Lign Then
     
      mois = InputBox("Saisie le mois :  " & vbCrLf & "1 = Septembre  " & vbCrLf & "2 = Octobre  " & vbCrLf & "3 = Novembre  " & vbCrLf & "4 = Décembre  " & vbCrLf & "5 = Janvier  " & vbCrLf & "6 = Février  " & vbCrLf & "7 = Mars  " & vbCrLf & "8 = Avril  " & vbCrLf & "9 = Mai  " & vbCrLf & "10 = Juin  " & vbCrLf & "11 = Juillet", "mois")
     
      ActiveCell.Offset(0, mois).Activate
      Exit Sub
      Else
      Exit Sub
      End If
     
     
     
     
        End Sub
    Comme si je me retrouver avec le deux cellules actives en les sélectionnant avec Ctrl + clic gauche????

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    je suis parti de ton tout premier code ... mais je ne suis pas vraiment sûr d'avoir compris

    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
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Nom As String
    Dim Cell As Range
     
    If Not Intersect(Target, Range("$C$2:M200")) Is Nothing And Target.Value = "X" Then
        ActiveWorkbook.Save
        If MsgBox("Lancer clôture fichiers pdf", vbYesNo, "Demande de confirmation") = vbYes Then Application.Run ("TestListeFichiers")
    ElseIf Not Intersect(Target, Range("$A$1:A200")) Is Nothing And Target.Value <> "" Then
        Nom = InputBox("Saisie de votre NOM Prénom : ", "NOM Prénom")
        If Nom <> "" Then
            Set Cell = Range("A2:A150").Find(Nom)
            If Not Cell Is Nothing Then Cell.Select
        End If
    End If
     
    End Sub

    tu veux gérer deux cas différents sur l'évènement Double Clic :

    1) Si on double clic dans la zone C2:M200 et que la cellule a pour valeur "X" : on enregistre le fichier. Si l'utilisateur répond oui au MsgBox, on doit lancer la macro "TestListeFichiers"

    2) Si on double clic dans la zone A1:A200 et que la cellule n'est pas vide : on demande à l'utilisateur une valeur à chercher. Si cette valeur existe dans la plage A2:A150 alors on sélectionne cette cellule

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Exact.
    Après, je voudrais que la cellule (0,X) soit sélectionner en rentrant X dans un inputbox.

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/05/2015, 09h35
  2. Réponses: 2
    Dernier message: 19/02/2013, 11h01
  3. Réponses: 1
    Dernier message: 22/09/2006, 13h05
  4. Réponses: 2
    Dernier message: 07/09/2006, 17h05
  5. récupérer des valeurs pour une semaine donnée
    Par duck54 dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/05/2006, 01h13

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