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 14/10/2011, 11h40   #1
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 134
Points : 29
Points : 29
Par défaut De quelle ligne vient ma variable ?

Bonjour à tous et toutes

Je profite de ce nouveau post pour remercier tous ceux qui ont répondu par le passé à mes questions !

Je poursuis dans mes reflexions

Dans le code ci dessous, je récupère une variable dans la listBox1

Cette variable appelée "matertransfert" correspond à la première colonne d'un "catalogue" de matériels

Je réussis grâce au code ci dessous à en transférer le contenu dans la première ligne vide de la feuille active (après avoir fermé le fichier Novomaterbase)

Ce que je souhaite désormais, c'est récupérer les autres données de mon catalogue (le fichier "novomaterbase") associées au matériel de la variable "matertransfert".

J'imagine la procédure suivante

Récupérer le numéro de ligne (x) d'où vient le matériel dont le nom est dans la variable "matertransfert"
> C'est là où je coince un peu
A partir de ce numéro de ligne, aller chercher une à une les valeurs des colonnes B(x), C(x), D(x) ...... et les stocker dans des variables
Puis, rebasculer ces différentes variables dans les colonnes correspondantes de la "Worksheets("Novomaterbase")"

Est ce jouable ?




Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub CommandButton1_Click()
If ListBox1.ListIndex = -1 Then Exit Sub
Dim matertransfert As String
matertransfert = ListBox1.List(ListBox1.ListIndex)
 
Workbooks("NovoMaterBAse.xls").Close SaveChanges:=False
ActiveWindow.WindowState = xlMaximized
Unload UserForm1
Dim LaDerniere As Long
LaDerniere = Range("B65536").End(xlUp).Row
Dim LaCase As String
LaCase = "B" & LaDerniere + 1
Worksheets("Novomaterbase").Range(LaCase) = matertransfert
Merci par avance pour votre aide

Daniel
familledacp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 12h09   #2
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
Un bout de code pour démarer


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dim matertransfert As String
matertransfert = "Toto"
 
Dim C As Range
Dim Plage As Range
Dim C1 As Range
Dim CompA As Integer
Dim R As Long
 
Set Plage = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
 
For Each C In Plage
    If C.Value = matertransfert Then
        R = C.Row
        Set C1 = C
        For CompA = 1 To 20
            C1.Offset(0, CompA).Value = CompA
        Next CompA
    End If
Next C
Bon courage
__________________
Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 13h26   #3
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 134
Points : 29
Points : 29
Merci Jean Pierre pour cette réponse

Je vais la regarder

De mon coté, j'ai poursuivi dans la première voie

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub CommandButton1_Click()
If ListBox1.ListIndex = -1 Then Exit Sub
Dim matertransfert As String
matertransfert = ListBox1.List(ListBox1.ListIndex)
Dim L As Integer
Dim N As String
N = matertransfert
MsgBox (N)
L = Worksheets("Novomaterbase").Range("B1:B65536").Find(N, lookat:=xlWhole).Row
MsgBox (L)
 
Workbooks("NovoMaterBAse.xls").Close SaveChanges:=False
ActiveWindow.WindowState = xlMaximized
Unload UserForm1
Dim LaDerniere As Long
LaDerniere = Range("B65536").End(xlUp).Row
Dim LaCase As String
LaCase = "B" & LaDerniere + 1
Worksheets("Novomaterbase").Range(LaCase) = matertransfert
J'ai une erreur 91 dans la ligne 9 ... Erreur de syntaxe ?

A bientot

Daniel
familledacp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 13h42   #4
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
Je n'ai pas d'érreur chez moi avec la ligne

Code :
L = Worksheets("Novomaterbase").Range("B1:B65536").Find(N, lookat:=xlWhole).Row
__________________
Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 13h53   #5
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 134
Points : 29
Points : 29
Re bonjour

Le texte de l'erreur est "Variable objet ou variable de bloc With non définie"

Je cherche

Daniel
familledacp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 13h58   #6
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
J'ai reproduit ton erreur

C'est quand elle ne trouve pas

regarde et tu dis
__________________
Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 14h40   #7
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 134
Points : 29
Points : 29
Re Re

Elle ne trouve pas ....

Merci pour cet indice

Je me faisais des noeuds dans mes classeurs et mes feuilles

J'avais d'ailleurs des feuilles qui portaient le meme nom dans mes deux classeurs, j'ai donc fait quelques modifs

J'ai le classeur NovoMaterBase.xls avec la feuille BaseListe
et le classeur NovoMaterModele.xls avec la feuille ListeMater

Voici le code "modifié" et qui ne plante plus.


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub CommandButton1_Click()
If ListBox1.ListIndex = -1 Then Exit Sub
Dim matertransfert As String
matertransfert = ListBox1.List(ListBox1.ListIndex)
Dim L As String
Dim N As String
N = matertransfert
MsgBox (N)
L = Workbooks("NovoMaterbase.xls").Worksheets("BaseListe").Range("B3:B1300").Find(N, lookat:=xlWhole).Row
MsgBox (L)
Workbooks("NovoMaterBAse.xls").Close SaveChanges:=False
ActiveWindow.WindowState = xlMaximized
Unload UserForm1
Dim LaDerniere As Long
LaDerniere = Range("B65536").End(xlUp).Row
Dim LaCase As String
LaCase = "B" & LaDerniere + 1
MsgBox (LaCase)
Workbooks("Novomatermodele.xls").Worksheets("ListeMater").Range(LaCase) = matertransfert
 
 
End Sub
Merci pour ton aide

Daniel
familledacp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h17.


 
 
 
 
Partenaires

Hébergement Web