Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/10/2011, 16h45   #1
Invité régulier
 
Femme
Étudiant
Inscription : 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
Points : 6
Points : 6
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 :
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.Cells(iT, "o").Value = "GCW = " & UserForm5.TextBox4.Value
La partie qui m'interesse se trouve apres le End With

Merci de votre aide
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 18h14   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour, essaie comme ceci pour cerner le problème :

Code :
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.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 22h06   #3
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
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 :
=NBVAL('Save values'!O:O)
- Pourquoi utiliser with
Code :
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 :
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 :
iT = T.Cells(100, "z").Value
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 10h22   #4
Invité régulier
 
Femme
Étudiant
Inscription : 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
Points : 6
Points : 6
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
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 10h48   #5
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
NBVAL retourne le nombre de cellules non vide

dans ton cas, tu mets la formule ci dessous dans Z100
Code :
=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 :
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
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h03.


 
 
 
 
Partenaires

Hébergement Web