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 :

Problème de réception d'une cellule [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Par défaut Problème de réception d'une cellule
    Bonjour à tous !

    Je souhaite récupérer la valeur d'une cellule récupérée d'un classeur et une feuille spécifique pour la comparer à une chaîne.

    Pour ce faire, je l'ai mise dans une boucle For pour permettre de naviguer sur toute une colonne, cependant il me met une erreur pour la réception de la cellule...

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i = 1 To 100
            cellule = Classeur.Sheets(Feuille).Cells(LigneDebut, i)      '[L'erreur est ici]
            If cellule = Chaine Then
                'Faire
            Else
                'Faire
            End If
      Next i
    La variable Feuille est bien un String, tout comme cellule... Et LigneDebut est bien un Integer...

    Pourriez vous m'aider ?

    Merci !

  2. #2
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 6
    Par défaut
    Salut,

    Classeur = Le classeur ou tu lances la macro ou un autre ?
    Si tu remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cellule = Classeur.Sheets(Feuille).Cells(LigneDebut, i)
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cellule = Sheets(Feuille).Cells(LigneDebut, i)
    Il se passe quoi ?
    Quel est l'erreur retourné ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Par défaut
    L'erreur renvoyé est :

    Erreur d'éxécution '9' :

    L'indice n'appartient pas à la sélection

    Pour note, classeur a été instancié ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Chemin = GENERATEUR.TextBox1.Value
    Set Classeur = Workbooks.Open(Chemin)
    Classeur.Application.DisplayAlerts = False
    Classeur.Application.Visible = False
    Ce code, je ne l'ai pas fait, c'est un collègue qui me l'a passé pour que je le re-travaille, le simplifie.

    Merci de ta réponse

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 6
    Par défaut
    Met ton code complet stp

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Par défaut
    Le problème c'est que c'est des fonctions qui s'apellent ^^ Mais si tu désires quand même :

    Fonction qui recherche pour quelle colonne il y a telle chaîne de caractère
    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
     
     
    Function RechNumCol(Classeur As Workbook, Feuille As String, Chaine As String, LigneDebut As Integer) As Integer
    Dim i As Integer
    Dim cellule As String
     
        For i = 1 To 100
            cellule = Sheets(Feuille).Cells(LigneDebut, i) 'Avec ta modification donc
            If cellule = Chaine Then
                RechNumCol = i
                Exit Function
            Else
                RechNumCol = 255
                MsgBox ("La colonne " & Chaine & " est absente de la BDD")
            End If
        Next i
     
    End Function
    Deuxième fonction (qui appelle la première):

    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
     
            Chemin = GENERATEUR.TextBox1.Value
            Set Classeur = Workbooks.Open(Chemin)
            Classeur.Application.DisplayAlerts = False
            Classeur.Application.Visible = False
     
            If ActiveWorkbook.Name <> ThisWorkbook.Name Then
                ActiveWindow.Visible = False
            End If
     
            CompteurInstrum = 0
     
            With GENERATEUR
                ChoixSection = TraitCar(.ComboBox1.Value) 'Récupère le choix en enlevant l'indice mis par une autre fonction
                .ComboBox2.Clear
                .ComboBox3.Clear
                .ComboBox4.Clear
                .ComboBox5.Clear
                .CommandButton2.Enabled = True
            End With
     
            colonneArret = RechNumCol(Classeur, ChoixSection, "Arrêt", 0) 'N° de colonne "Arrêt"
            colonneEtat = RechNumCol(Classeur, ChoixSection, "Etat", 0) 'N° de colonne "Etat"
    Si tu arrives à comprendre ^^

    Merci

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 6
    Par défaut
    Je suis pas sur d'avoir compris, je suis novice également.

    En gros
    - Tu as un premier fichier d’où s’exécute ta macro
    - Tu récupère le chemin d'un fichier via une combobox.
    - Tu récupère un string via une autre combobox (ou la meme).

    Et tu recherche la colonne où cette string apparait dans le fichier que tu viens d'ouvrir.

    C'est ca ?
    Si cette String est présente, elle ne peut l'être qu'une fois ?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 8
    Par défaut
    Citation Envoyé par Drezko Voir le message
    L'erreur renvoyé est :

    Erreur d'éxécution '9' :

    L'indice n'appartient pas à la sélection
    Bonjour,

    A mon avis, la variable Feuille n'a pas pour valeur le nom d'une feuille du classeur.
    Insère "Debug.print Feuille" avant l'instruction en erreur pour voir sa valeur.

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    l'exemple que je t'ai donnée ne prend pas en charge le nom du classeur
    c'était un exemple générique a toi d'adapter a ton besoin et ajouter un argument a ta fonction

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Par défaut
    Citation Envoyé par AVSInfoGest Voir le message
    Bonjour,

    A mon avis, la variable Feuille n'a pas pour valeur le nom d'une feuille du classeur.
    Insère "Debug.print Feuille" avant l'instruction en erreur pour voir sa valeur.
    J'ai déjà vérifier les valeurs en laissant la souris dessus, donc de ce côté là c'est bon...

    Citation Envoyé par patricktoulon Voir le message
    bonjour
    l'exemple que je t'ai donnée ne prend pas en charge le nom du classeur
    c'était un exemple générique a toi d'adapter a ton besoin et ajouter un argument a ta fonction

    au plaisir
    Même en adaptant de plusieurs façons différentes, il me met l'erreur exactement au même endroit :/

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

Discussions similaires

  1. Problème de format dans une cellule excel
    Par Nodoso dans le forum VB.NET
    Réponses: 6
    Dernier message: 13/12/2009, 18h26
  2. [E-07] problème retour chariot d'une cellule
    Par law56100 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 30/03/2009, 19h25
  3. Réponses: 0
    Dernier message: 02/09/2008, 13h54
  4. Réponses: 3
    Dernier message: 06/12/2006, 10h01
  5. [VBA] Problème récup texte d'une cellule dans un tableau
    Par Marco le Pouillot dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 30/01/2006, 17h06

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