Vba

naya85 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   -  
naya85 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour



en fait j'ai deux feuilles excel (dans deux fichiers différents)

sur l'une j'ai fait une liste de lots (L1;L2;L3 ) dans la feuille1 et dans l'autre j'ai créé un tableau dynamique dans une feuille2, l'un de ses champs est lot(cad ma liste L1;L2;L3)

ma question est que je voudrais à partir de ma première liste que j'ai créé dans la feuille 1, par exemple si je choisis L1 dans la feuille, que ça se génère automatiquement dans mon tableau dynamique et que ça soit les infos relatifs à L1

je ne sais pas si jai été assez claire

merci!

@++

naya

8 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
Pour commencer, enregistre une macro pendant que tu fais à la main les manipulations que tu veux automatiser.
0
naya85 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
merci pour ta réponse c'est bien ce que j'ai fait!

en fait pourrais tu me dire comment je peux renvoyer la dernière ligne non vide (et/ou la dernière cellule non vide)

merci
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Tu peux me montrer le code que tu as, et expliquer pourquoi tu veux le changer ?
Il me semble que ce que tu veux obtenir peut se faire tout simplement avec une macro enregistrée.
0
naya85 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour

merci pour ta réponse

Sheets("Moyenne1").Activate
Rows("6:700").Select
Selection.Copy
Sheets("Copie temp1").Activate
Rows("1:1").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = ""
ActiveWorkbook.Save
Sheets("Copie temp1").Activate
Range("A1").Select
Selection.Columns.AutoFit
Range("A1:I22").Select ' il faut remplacer I22 par la dernière cellule non vide

En fait le tableau ci dessus est variant , c'est un tableau croisé dynamique
dans l'exemple ci dessus c'est I22 la dernière cellule pleine mais si je change certains paramètre elle sera plus I22

c'est pour que je veux faire un code avec une commande qui me permet de savoir la dernière cellule non vide

Merci!
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
Au lieu de la ligne Range("A1:I22").Select ' il faut remplacer I22 par la dernière cellule non vide
ajoute le code suivant :

Dim icol As Integer, irow As Integer
irow = 1
icol = 1

Do While Cells(irow + 1, 1) <> ""
irow = irow + 1
Loop
Do While Cells(1, icol + 1) <> ""
icol = icol + 1
Loop
Range(Cells(1, 1), Cells(irow, icol)).Select

End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
naya85 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
merci pour ta réponse!

en fait j'ai inséré la lign e quivante dans mon code

NbrLig3 = Sheets("Copie temp2").Cells(65536, Col).End(xlUp).Row

et il me renvoit lerreur suivante :

lindice n'apartient pas à la collection

Merci!
0
naya85 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
c'est bon jai trouvé

merci!

sinon comment je peux renvoyer la première cellule d'une colonne?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > naya85 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
cells(1,col) avec col le numéro de la colonne.
0
naya85 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
merci pr ta réponse c'est très très gentil

en fait jai fait la macro ci dessus dans le classeur "Copie temp2"

Sub calcul()


Dim NbrLig3 As Long



cel1 = Application.Intersect(Range("B1:B100"), Range("A4:P4"))
cel2 = Application.Intersect(Range("B1:B100"), Range("A6:P6"))
cel3 = Application.Intersect(Range("B1:B100"), Range("A7:P7"))
cel4 = Application.Intersect(Range("B1:B100"), Range("A9:P9"))

NbrLig3 = Sheets("Copie temp2").Cells(65536, 1).End(xlUp).Row



Rows(NbrLig3).Select
ActiveWorkbook.Names.Add Name:="lig", RefersToR1C1:="='Copie temp2'! R&NbrLig3"

Set isect1 = Application.Intersect(Range("B1:B100"), Range("lig"))

End Sub

elle me renvoi une erreur à la ligne
Set isect1 = Application.Intersect(Range("B1:B100"), Range("lig"))
comme quoi la méthode range ne marche pas

en fait je pense que cela est dû à ma variable lig

en fait lig est le nom d'une ligne grace à la ligne suivante

ActiveWorkbook.Names.Add Name:="lig", RefersToR1C1:="='Copie temp2'! R&NbrLig3"

Merci et à bientot!

bonne journée
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
set isect1=cell(nbrlig3,2)
0
naya85 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
merci bcp pour la réponse

jai fais un long tour alors que cette ligne me permet de faire ce que je voulais :-)

en fait jai un autre pb

Sub Macro24()
'
' Macro24 Macro
' Macro enregistrée le 23/06/2008 par LEMSSOUGUER Nadia
'

'
Dim i As Integer

For i = 1 To 20
If (Cells(i, 1).Value = "Assignée" Or "Corrigée" Or "Livrée" Or "Prise en charge") Then
Cells(i, 1).Activate
With Selection.Interior
.ColorIndex = 7
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
End If

Next i

End Sub


il me renvoit une erreur comme quoi les types de la ligne
If (Cells(i, 1).Value = "Assignée" Or "Corrigée" Or "Livrée" Or "Prise en charge")

sont incompatibles

je voudrais savoir comment je pourrais corriger cette faute!

Merci

@+
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
il faut plutot faire ainsi :

If (Cells(i, 1).Value = "Assignée") Or (Cells(i, 1).Value ="Corrigée") Or (Cells(i, 1).Value ="Livrée") Or (Cells(i, 1).Value ="Prise en charge") )
0
naya85 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
merci bcp!
0