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

VBA Access Discussion :

recherche d'une chaine dans une feuille excel [AC-2003]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 85
    Par défaut recherche d'une chaine dans une feuille excel
    Bonjour ,
    S'il vous plait j'ai un petit probléme , j'ai fait un programme qui permet d'extraire des cellules d'une feuilles xls bien particulier dans une table Access, mais le probléme qu'il me stoke tous les cellules dans cette table , voilà 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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    function IMPORT_MAQ_TEST()
     
     
    'Ici l'importation se déclenche en cliquant sur le bouton "Commande1"
    'mais on peut aussi mettre ce code à l'ouverture d'un formulaire
    Dim oApp As Excel.Application
    Dim oWkb As Excel.Workbook
    Dim oWSht As Excel.Worksheet
    Dim oWSht2 As Excel.Worksheet
     
     
    Set oApp = CreateObject("Excel.Application")
    Set oWkb = oApp.Workbooks.Open("C:\Documents and Settings\cer5490111\Bureau\Contrôle TP69 PCN064_CER54") 'mettez ici le chemin vers votre fichier Excel
    Set oWSht2 = oWkb.Worksheets("Conversion TP69 Etat 1 à 8") 'mettez ici le nom de la feuille qui contient les données à importer
     
     
     
    'première ligne ou commence l'import
    Dim I As Integer
    Dim J As Integer
     
    Dim A
     
    Dim cSQL2 As String
    Dim chaine As String
     
     A = REQ_EXEC("MAQ_RECAP1_DEL")
     
    I = 8
     
     
    'pour éviter les messages lors de l'ajout des enregistrements
    DoCmd.SetWarnings False
     
    'tant qu'on n'est pas arrivés à la ligne 600 du tableur
    While (oWSht2.Cells(I, 1) )<> ""
     
    If oWSht2.Cells(I, 1).Value = "S" Then
     
    cSQL2 = "insert into [MAQ_RECAP1_TAB]( [ID_MODIF1] ) values (" & Chr(34) & oWSht2.Cells(I, 1) & Chr(34) & ");"
     
    DoCmd.RunSQL cSQL2
     
     
    End If
    I = I + 1
     
    Wend
    DoCmd.SetWarnings True
    Set oWSht2 = Nothing
    Set oWkb = Nothing
    Set oApp = Nothing
     
     
     
    Exit_IMPORT_MAQ_TEST:
        Exit Function
     
    Err_IMPORT_MAQ_TEST:
           Resume Next
        MsgBox Error$
     
    Resume Next
    End Function

  2. #2
    Membre éclairé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Juin 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2012
    Messages : 53
    Par défaut
    Citation Envoyé par afifaNancy Voir le message
    j'ai fait un programme qui permet d'extraire des cellules d'une feuilles xls bien particulier dans une table Access, mais le probléme qu'il me stoke tous les cellules dans cette table.
    Salut,

    A première vue ton code est bon. Voilà ce que j'ai compris:

    - Tu parcoures toutes les lignes remplies de ton fichier excel
    - Si la 1ère cellule de ta ligne est égale à "S" (enlève le .value qui est plus pour des valeurs numériques) alors tu exécutes ta requête : tu insères "S" dans le champ [ID_MODIF1] de la table [MAQ_RECAP1_TAB].

    Quel est ton problème exactement ? C'est que ton code ne reconnaît pas la condition sur le "S" (et importe donc toutes les lignes) ?

  3. #3
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 85
    Par défaut
    Bonjour ,

    Merci pour votre réponse , mon probléme c'est que les cellules que j'ai dans le fichier excel contient S0256, S0259 ... moi je veux lorsque je trouve le S et d'autre caractére je récupére toute la cellule.

  4. #4
    Membre éclairé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Juin 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2012
    Messages : 53
    Par défaut
    Citation Envoyé par afifaNancy Voir le message
    Bonjour ,

    Merci pour votre réponse , mon probléme c'est que les cellules que j'ai dans le fichier excel contient S0256, S0259 ... moi je veux lorsque je trouve le S et d'autre caractére je récupére toute la cellule.
    Si j'ai bien compris :

    - Si le premier caractère de ta cellule est un "S" alors tu veux importer tout le contenu de la cellule ?

    Dans ce cas, il faut utiliser la fonction LEFT qui te permets de récupérer la partie gauche de ta chaîne de caractère (RIGHT si tu veux récupérer la partie droite) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Left(Chaine_de_caractère, X)
    Plus d'infos sur la fonction par ici : http://msdn.microsoft.com/fr-fr/libr...(v=vs.80).aspx

    avec :
    - Chaine_de_caractère : la variable que tu veux tester (une variable STRING)
    - X : le nombre de caractère que tu veux garder

    donc ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Left(oWSht2.Cells(I, 1), 1)
    que tu mets dans ta boucle SI :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Left(oWSht2.Cells(I, 1), 1) = "S" Then
         cSQL2 = "insert into [MAQ_RECAP1_TAB]( [ID_MODIF1] ) values (" & Chr(34) & oWSht2.Cells(I, 1) & Chr(34) & ");"
         DoCmd.RunSQL cSQL2
    End If
    Ca devrait fonctionner.

  5. #5
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 85
    Par défaut
    Merci bcq , vous m'avez bien aider

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

Discussions similaires

  1. rechercher la suite d'une chaine dans une chaine
    Par ju0123456789 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 04/12/2009, 15h10
  2. recherche d'une chaine dans une chaine
    Par Katachana dans le forum Langage
    Réponses: 2
    Dernier message: 15/07/2008, 12h10
  3. recherche d'une chaine dans une chaine
    Par jpclutier dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 03/12/2007, 11h30
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Réponses: 2
    Dernier message: 19/10/2005, 15h38

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