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 :

VBA pour retrouver la feuille puis la ligne à compléter


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Marketing
    Inscrit en
    Juin 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Marketing

    Informations forums :
    Inscription : Juin 2011
    Messages : 12
    Par défaut VBA pour retrouver la feuille puis la ligne à compléter
    Bonjour à tous,

    J'ai besoin de votre aide pour un petit programme VBA. Je ne comprends pas pourquoi il ne fonctionne pas. A chaque fois, j'ai un message d'erreur "L'indice n'appartient pas à la selection". Autrement dit, Excel ne retrouve pas la feuille (si je comprends bien...)

    Si vous pouviez jeter un petit coup d'oeil au programme, je vous serais vraiment reconnaissante.

    Comme le titre l'indique, le but de ce code est qu'Excel retrouve dans un premier temps la feuille à complèter. Son nom est indiqué dans la feuille Saisie n_Commande, cellule F10.
    Dans un second temps, Excel doit retrouver la ligne à compléter. Cette ligne est déja pré remplie en partie par un formulaire(une autre feuille Saisie Code). Il doit donc retrouver la ligne qui contient le bon n° de pré commande dans la cellule G10 et compléter les cellules en face. Ce numéro est saisi dans la feuille Saisie n_Commande cellule A1.

    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 Saisie n_Commande()
     Dim code_transfert As String
     
    code_transfert= Trim(Sheets("Saisie n_Commande").Range("F10"))
     
    'Recherche de l'onglet qui correspond au code de transfert
     
     Dim i As Integer
     i = 9
     While code_transfert.Columns(2).Rows(i).Value <> ""
     i = i + 1
     Wend
     
     ' recherche de la ligne à compléter
     i = 9
     While code_transfert.Columns(12).Rows(i).Value <> Sheets("Saisie n_Commande").Range("F7").Value
     i = i + 1
     Wend
     
     ' Mise à jour du n° bon commande
     code_transfert.Columns(15).Rows(i).Value = Sheets("Saisie n_Commande").Range("F12").Value
     
     ' Mise à jour de la date de réception du n° de commande
     code_transfert.Columns(17).Rows(i).Value = Sheets("Saisie n_Commande").Range("J12").Value
     code_transfert.Columns(18).Rows(i).Value = Sheets("Saisie n_Commande").Range("K12").Value
     code_transfert.Columns(19).Rows(i).Value = Sheets("Saisie n_Commande").Range("L12").Value
     
     
     
    End Sub

    Merci bcp pour votre aide,
    Je pense que le souci est dans la recherche de la ligne à compléter mais toute seule je n'y arrive pas.

    Merci.

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    bonjour,
    j'ai un message d'erreur "L'indice n'appartient pas à la selection". Autrement dit, Excel ne retrouve pas la feuille (si je comprends bien...)
    Je pense que le souci est dans la recherche de la ligne à compléter ...
    en fait ton premier souci vient du fait que tu as un problème avec ta feuille donc ta première remarque est la bonne
    au lieu de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Dim code_transfert As String
    code_transfert= Trim(Sheets("Saisie n_Commande").Range("F10"))
    fait plutôt ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim code_transfert As Worksheet
    Dim ws_recherche As String
     
    'je met en variable le nom de feuille à rechercher
    ws_recherche = Trim(Sheets("Saisie n_Commande").Range("F10").Value)
     
    'je met en variable ma feuille trouvée
    Set code_transfert = Worksheets(ws_recherche)
    ensuite si il n'y a aucun nom de feuille qui correspond au nom indiqué en F10 alors tu auras la même erreur. pour éviter cette erreur fait comme ceci:
    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
    Dim code_transfert As Worksheet, ws As Worksheet
    Dim ws_recherche As String
     
    'je met en variable le nom de feuille à rechercher
    ws_recherche = Trim(Sheets("Saisie n_Commande").Range("F10").Value)
     
    'je boucle sur les feuilles du classeur
    For Each ws In Worksheets
     
    'si le nom de la feuille est identique à ma recherche alors
       If ws.Name = ws_recherche Then
     
           'je met en variable ma feuille trouvée
           Set code_transfert = Worksheets(ws_recherche)
     
           'je sort de la boucle
           Exit For
     End If
    Next ws
     
    'si ma variable feuille est vide, c'est que ma feuille n'existe pas alors
    If code_transfert Is Nothing Then
     
          'j'affiche un message d'erreur
          MsgBox ("Saisir un nom de feuille valide!")
     
          'je sors de ma procédure
          Exit Sub
    End If
     
    'ici le reste de ton code,
    'pour ta recherche de ligne puisque tu as identifié ta feuille
    comme indiqué dans le code reste plus qu'à faire ta recherche de ligne.

Discussions similaires

  1. Problème lors de la 1ère utilisation d'une macro VBA pour copie de feuille
    Par youp_youp_ dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/06/2014, 11h54
  2. [XL-2013] Retrouver une feuille puis une cellule dans un autre fichier
    Par bolide7 dans le forum Excel
    Réponses: 19
    Dernier message: 17/02/2014, 19h54
  3. [XL-2010] Code vba pour retrouver fichiers office et open office
    Par adkheir dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 27/01/2014, 09h52
  4. RECHERCHE V en VBA pour comparer 2 feuilles
    Par Debutant10 dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 22/08/2013, 15h13
  5. [XL-2010] Code VBA pour comparer deux feuilles Excel
    Par sam013 dans le forum Excel
    Réponses: 1
    Dernier message: 13/08/2012, 15h53

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