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 pour incrémenter


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 63
    Par défaut problème pour incrémenter
    Bonjour voilà je vous explique mon problème. J'ai un menu avec plusieurs textbox. Ces textbox correpondent à des options de recherches. Je voudrais pouvoir avoir un historique des recherches que j'ai effectué. Ainsi je souhaite venir donner à une cellule d'une page excel la valeur que j'ai utilisé lors de ma recherche. Le problème c'est que je veux incrémenter à chaque fois pour ne pas écrire deux fois dans la même ligne si je fais plusieurs recherche et c'est là que j'ai un problème. En effet à la première itération correpondant à iT j'arrive bien à écrire dans ma cellule. cependant quand je fais une deuxième recherche je ne parviens plus à écrire et excel m'écrit "application or object defined error". Je ne comprend pas pourquoi pouvez vous m'aider svp?

    Je met le bout de code qui m'interesse

    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
    Dim iL As Long
    Dim T As Worksheet
    Dim LastLig As Long
    Set T = Worksheets("searching results")
    Set S = Worksheets("Save values")
     
    iT = Cells(100, "z").Value
     
    With T
     
    LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
     
    End With
     
     If TextBox4.Value <> "" Then
     
     S.Cells(iT, "o").Value = "GCW = " & UserForm5.TextBox4.Value
     iT = iT + 1
     T.Cells(100, "z").Value = iT

    Le débuger m'indique que la ligne qui plante est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    S.Cells(iT, "o").Value = "GCW = " & UserForm5.TextBox4.Value
    La partie qui m'interesse se trouve apres le End With

    Merci de votre aide

  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, essaie comme ceci pour cerner le 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
    Dim iL As Long
    Dim T As Worksheet
    Dim LastLig As Long
    Set T = Worksheets("searching results")
    Set S = Worksheets("Save values")
     
    iT = Cells(100, "z").Value
     
    With T
     
    LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
     
    End With
     
     If TextBox4.Value <> "" Then
     
    MsgBox S.Cells(iT, "o").Value
    MsgBox UserForm5.TextBox4.Value
    S.Cells(iT, "o").Value = "GCW = " & UserForm5.TextBox4.Value
     iT = iT + 1
     T.Cells(100, "z").Value = iT
    et reviens poster ce qui s'affiche.

  3. #3
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Quelques remarques

    - J'ai du mal a cerner l'utilisation de la variable iT(qui au passage n'est pas déclarée)
    Etape 1 iT prend la valeur de la cellule z100 de la feuille T qui contient le nombre de saisie.
    Etape 2. iT te sert à mettre la nouvelle saisie dans la feuille S colonne O
    Si je comprend bien la cellule z100 contient le nombre de valeur de la colonne O de la feuille S
    On peut obtenir cela avec la formule NBVAL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NBVAL('Save values'!O:O)
    - Pourquoi utiliser with
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With T
     
    LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
     
    End With
    Alors que ci dessous me semble moins long
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LastLig = T.Cells(T.Rows.Count, 1).End(xlUp).Row

    Cela étant dit, pour ton erreur, as tu essayé, en spécifiant la feuille sur la ligne 7
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iT = T.Cells(100, "z").Value

  4. #4
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 63
    Par défaut
    C'est tout a fais çà jfontaine. Et le problème venait bien du fait que la feuille n'atait pas spécifié.

    Pour l'utilisation de nbval comment ceci fonctionne et à quoi sert cette commande car en effet si je peux simplifier l'utilisation en ayant plus ce passage par une cellule pour l'incrémentation çà m'arrangerait?

    Merci de ta réponse

  5. #5
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    NBVAL retourne le nombre de cellules non vide

    dans ton cas, tu mets la formule ci dessous dans Z100
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NBVAL('Save values'!O:O)
    Ceci est une solution qui simplifie ton code, mais dans ton cas, l'utilisation d'une cellule qui contiendrait la prochaine ligne n'ait pas du plus "propre"

    Le bout de code avec la variable LastLigne semblait être une bonne approche

    Le code ci-dessous devrait faire ce que tu souhaites
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim S As Worksheet
    Set S = Worksheets("Save values")
     
    If TextBox4.Value <> "" Then
        S.Range("O" & S.Range("A" & S.Rows.Count).End(xlUp).Row+1).Value = "GCW = " & UserForm5.TextBox4.Value
    end if

Discussions similaires

  1. problème pour incrémenter avec condition
    Par la nouvelle dans le forum Excel
    Réponses: 7
    Dernier message: 18/05/2015, 14h06
  2. Problème pour glisser et incrémenter une formule
    Par seboboch dans le forum Excel
    Réponses: 2
    Dernier message: 02/02/2012, 09h27
  3. [DOS] Problème pour incrémenter un pointeur de chaîne
    Par Weedou dans le forum Assembleur
    Réponses: 1
    Dernier message: 09/04/2007, 20h51
  4. Réponses: 3
    Dernier message: 29/08/2003, 10h57
  5. Problème pour récupérer la clé primaire
    Par caramel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/04/2003, 13h57

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