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 :

Macro effectuant une recherche de référence


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2015
    Messages : 10
    Par défaut Macro effectuant une recherche de référence
    Bonjour ami(e)s développeurs, bonjour le forum
    toujours dans le cadre de mon projet je suis entrain d'effectuer ma deuxième macro qui consiste à réaliser une entrée en stock d'une pièce étant déjà référencée.
    Voici l'ébauche de mon 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
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    Option Explicit
     
    Sub Entrée_référencée()
     
    'Déclaration de variable
    Dim I As Byte
    Dim CS As Workbook
    Dim Trouve As Range
    Dim Ref_stock As String
    Dim Plage_recherche As Range
    Dim Ref As String
     
    Set CS = Workbooks("Gestion des pièces maintenance 2ème projet.xlsm")
     
    'Test de la bonne saisise des caractéristiques
    For I = 3 To 11
     
        If CS.Sheets("Entrée stock").Cells(9, I).Value = "" Then
            MsgBox ("ATTENTION : La saisie (ENTRE PIECE NON REFERENCEE) est incorrecte. La référence rentrée est inexistante ou non renseignée.Veuillez saisir à nouveau")
            CS.Sheets("Entrée stock").Cells(9, I).Select
            Exit Sub
        End If
     
    'Procédure de recherche de référence 
    Next I
     
    Ref = Range("E9").Value
    Set Plage_recherche = CS.Sheets("Suivi du stock").Columns(3)
     
    Set Trouve = Plage_recherche.Cells.Find(what:=Ref, LookAt:=xlWhole)
     
    If Trouve Is Nothing Then
    MsgBox ("ATTENTION : La saisie (ENTRE PIECE NON REFERENCEE) est incorrecte. La référence rentrée est inexistante ou non renseignée. Veuillez saisir à nouveau")
    CS.Sheets("Entrée stock").Cells(9, 5).Select
    Exit Sub
     
    Else
     
    'Copie de la plage [Saisie_pièces] de la feuille "Entrée stock" vers la ligne "Trouve" de la feuille "Suivi du stock"
    CS.Sheets("Entrée stock").[Saisie_pièces].Value Copy CS.Sheets("Suivi du stock").Trouve
     
     
    End If
     
    'Réinitialisation des variable
     
        Set Plage_recherche = Nothing
        Set Trouve = Nothing
    Toute la première partie de mon code fonctionne, je voudrais que ma variable nommée "Trouve" me donne le numéro de la ligne qui contient la référence recherchée. Afin de copier la plage [Saisie_pièces] de la feuille "Entrée stock" vers la ligne "Trouve" de la feuille "Suivi du stock".

    En espérant que vous allez m'aider une nouvelle fois

    =Sk3rty*=

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Ou j'ai mal compris, ou la ligne est donnée par "Trouve.Row".

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2015
    Messages : 10
    Par défaut
    Voici de nouveau mon code il y avait quelques erreurs que j'ai repérées mais ça ne solutionne pas mon problème .
    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
    Option Explicit
     
    Sub Entrée_référencée()
     
    'Déclaration des variables
    Dim I As Byte
    Dim CS As Workbook
    Dim Ref As String
    Dim Ref_stock As String
    Dim Plage_recherche As Range
    Dim Trouve As Range
     
    Set CS = Workbooks("Gestion des pièces maintenance 2ème projet.xlsm")
     
    'Test de la bonne saisie des caractéristiques de la pièces
    For I = 3 To 11
     
        If CS.Sheets("Entrée stock").Cells(9, I).Value = "" Then
            MsgBox ("ATTENTION : La saisie (ENTRE PIECE NON REFERENCEE) est incorrecte. La référence rentrée est inexistante ou non renseignée.Veuillez saisir à nouveau")
            CS.Sheets("Entrée stock").Cells(9, I).Select
            Exit Sub
        End If
    Next I
     
    Ref = Range("E9").Value
    Set Plage_recherche = CS.Sheets("Suivi du stock").Columns(3)
     
    'Recherche de la référence
    Set Trouve = Plage_recherche.Cells.Find(what:=Ref, LookAt:=xlWhole)
     
    If Trouve Is Nothing Then
    MsgBox ("ATTENTION : La saisie (ENTRE PIECE NON REFERENCEE) est incorrecte. La référence rentrée est inexistante ou non renseignée. Veuillez saisir à nouveau")
    CS.Sheets("Entrée stock").Cells(9, 5).Select
    Exit Sub
     
    'Exécution de la copie de la plage [Saisie_pièces] de la feuille "Entrée stock" vers la feuille "Suivi du stock" de la ligne de la référence "Trouve"
    Else
    CS.Sheets("Entrée stock").[Saisie_pièces].Copy CS.Sheets("Suivi du stock").Trouve
    End If
     
    'Réinitialisation des variables
    Set Plage_recherche = Nothing
    Set Trouve = Nothing
     
    End Sub
    Du coup, Daniel.C, je voudrais que ma variable "Trouve" représente le numéro de la ligne où ce ma référence "Ref". Afin de copier la plage [Saisie_pièces] sur celle-ci.
    J'ai essayé avec "Trouve.Row" mais cela ne fonctionne pas.

    Je pense que le problème ce situe soit sur la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Trouve = Plage_recherche.Cells.Find(what:=Ref, LookAt:=xlWhole)
    Ou sur celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CS.Sheets("Entrée stock").[Saisie_pièces].Copy CS.Sheets("Suivi du stock").Trouve

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Dim Trouve as Variant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Trouve = Plage_recherche.Cells.Find(what:=Ref, LookAt:=xlWhole).Row
    If IsNumeric(Trouve) then

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2015
    Messages : 10
    Par défaut
    Merci de la réponse mais du coup j'ai trouvé une autre solution
    Voici 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
    41
    42
    43
    44
    45
    46
    47
    48
    Option Explicit
     
    Sub Entrée_référencée()
     
    'Déclaration des variables
    Dim I As Byte
    Dim CS As Workbook
    Dim Ref As String
    Dim Ref_stock As String
    Dim Plage_recherche As Range
    Dim Trouve As Range
    Dim Ligne_ref As Integer
     
    Set CS = Workbooks("Gestion des pièces maintenance 2ème projet.xlsm")
     
    'Test de la bonne saisie des caractéristiques de la pièces
    For I = 3 To 11
     
        If CS.Sheets("Entrée stock").Cells(9, I).Value = "" Then
            MsgBox ("ATTENTION : La saisie (ENTRE PIECE NON REFERENCEE) est incorrecte. La référence rentrée est inexistante ou non renseignée.Veuillez saisir à nouveau")
            CS.Sheets("Entrée stock").Cells(9, I).Select
            Exit Sub
        End If
    Next I
     
    Ref = Range("E9").Value
    Set Plage_recherche = CS.Sheets("Suivi du stock").Columns(3)
     
    'Recherche de la référence
    Set Trouve = Plage_recherche.Cells.Find(what:=Ref, LookAt:=xlWhole)
     
    If Trouve Is Nothing Then
    MsgBox ("ATTENTION : La saisie (ENTRE PIECE NON REFERENCEE) est incorrecte. La référence rentrée est inexistante ou non renseignée. Veuillez saisir à nouveau")
    CS.Sheets("Entrée stock").Cells(9, 5).Select
    Exit Sub
     
    'Exécution de la copie de la plage [Saisie_pièces] de la feuille "Entrée stock" vers la feuille "Suivi du stock" de la ligne de la référence "Trouve"
    Else
     
    Ligne_ref=Trouve.Row
    CS.Sheets("Entrée stock").[Saisie_pièces].Copy CS.Sheets("Suivi du stock").Cells(Ligne_ref,1)
    End If
     
    'Réinitialisation des variables
    Set Plage_recherche = Nothing
    Set Trouve = Nothing
     
    End Sub
    J'ai réintroduit une variable "Ligne_ref" qui correspond comme vous me l'aviez dit Trouve.Row

    J'en profite pour vous demander (je sais que la question a s'en doute été posée un certain nombre de fois ...) : Ma plage de cellule [Saisie_pièces] comprend des formules et je souhaiterais simplement copier les valeurs ainsi que les mots compris dans les cellules.

    En vous remerciant

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    J'en profite pour vous demander (je sais que la question a s'en doute été posée un certain nombre de fois ...) : Ma plage de cellule [Saisie_pièces] comprend des formules et je souhaiterais simplement copier les valeurs ainsi que les mots compris dans les cellules.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CS.Sheets("Entrée stock").[Saisie_pièces].Copy
    CS.Sheets("Suivi du stock").Cells(Ligne_ref,1).PasteSpecial xlPasteValues
    Les valeurs des cellules sont copiées.

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/03/2015, 12h40
  2. effectuer une recherche à l'aide d'une macro
    Par z.rhita dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/12/2010, 20h35
  3. liste deroulante pour effectuer une recherche
    Par pierrot67 dans le forum Bases de données
    Réponses: 2
    Dernier message: 29/04/2006, 09h27
  4. Effectuer une recherche avec jEdit
    Par lyon72 dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 3
    Dernier message: 04/04/2006, 18h44
  5. une requete effectuant une recherche sur tous les champs
    Par raynor911 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/02/2006, 15h06

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