[VBA] Argument pour la fonction cells
Fermé
Lulu
-
Modifié par Lulu le 23/07/2012 à 10:05
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 23 juil. 2012 à 12:13
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 23 juil. 2012 à 12:13
A voir également:
- [VBA] Argument pour la fonction cells
- Fonction si et - Guide
- Virginie organise un rallye avec 30 équipes. elle veut créer un code pour désigner chaque équipe. elle a commencé à la main, mais elle voudrait le faire calculer à l'aide d'une formule. proposez une formule comportant une seule fonction et à recopier vers le bas dans la colonne a du fichier à télécharger. quelle formule sera en a9 ? ✓ - Forum Programmation
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Ubuntu
- Erreur 1004 vba ✓ - Forum VB / VBA
- Vba pour les nuls pdf - Forum VB / VBA
8 réponses
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
23 juil. 2012 à 10:25
23 juil. 2012 à 10:25
Bonjour,
Feuil7.Select Est ce que cette feuille existe?????
Feuil7.Select Est ce que cette feuille existe?????
Bonjour,
Oui, Feuil7 existe bien.
Mon problème se situe au niveau des arguments pour la fonction Cells:
Je vais détailler ci dessous la manoeuvre que je veux exécuter:
Je dispose de deux onglets (Feuil 6 et Feuil 7) dans lesquels sont situés des données (différentes) rangées par années (de 2012 à 2015)
Mon but est d'avoir une macro qui prend en entrée une année de début (Cells (2,3)) et de fin (Cells(3,3)) et qui me permet d'afficher uniquement les données entre des deux années sur les deux feuilles.
Le bouton gérant la macro est sur la Feuil6.
c1 et c2 sont des cellules permettant de repérer la ligne et colonne des années sur la feuille 6 (ce sont des balises pour repérer où je dois chercher mes années)
Dans mon premier onglet, chaque année a 3 colonnes de données ( d'où le 3 * (i-1))
Dans mon deuxième onglet, chaque année a 10 colonnes de données ( d'où le 10* (i-1))
J'ai mis mon code ci dessous, mais il est assez dense et répétitif je dois l'avouer.
En espérant que cela vous aide à mieux comprendre mon problème,
Lulu
Oui, Feuil7 existe bien.
Mon problème se situe au niveau des arguments pour la fonction Cells:
Cells(1, nbvide + 10 * (i - 1) + 1 + n).Select
Je vais détailler ci dessous la manoeuvre que je veux exécuter:
Je dispose de deux onglets (Feuil 6 et Feuil 7) dans lesquels sont situés des données (différentes) rangées par années (de 2012 à 2015)
Mon but est d'avoir une macro qui prend en entrée une année de début (Cells (2,3)) et de fin (Cells(3,3)) et qui me permet d'afficher uniquement les données entre des deux années sur les deux feuilles.
Le bouton gérant la macro est sur la Feuil6.
c1 et c2 sont des cellules permettant de repérer la ligne et colonne des années sur la feuille 6 (ce sont des balises pour repérer où je dois chercher mes années)
Dans mon premier onglet, chaque année a 3 colonnes de données ( d'où le 3 * (i-1))
Dans mon deuxième onglet, chaque année a 10 colonnes de données ( d'où le 10* (i-1))
J'ai mis mon code ci dessous, mais il est assez dense et répétitif je dois l'avouer.
Sub Macromasquer() Feuil6 .Select ActiveSheet.Columns.Select Selection.EntireColumn.Hidden = False Dim n As Integer n = 0 Dim nbvide As Integer nbvide = 2 For i = 1 To 3 Feuil6.Select If Cells(c1.Row, 3 * (i - 1) + c2.Column + 1).Value < Cells(2, 3).Value Then Cells(c1.Row, 3 * (i - 1) + c2.Column + 1).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(c1.Row, 3 * (i - 1) + c2.Column + 2).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(c1.Row, 3 * (i - 1) + c2.Column + 3).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Feuil7.Select Cells(1, nbvide + 10 * (i - 1) + 1 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 2 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 3 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 4 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 5 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 6 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 7 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 8 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 9 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 10 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True End If Feuil6.Select If Cells(c1.Row, 3 * (i - 1) + c2.Column + 1).Value > Cells(3, 3).Value Then Cells(c1.Row, 3 * (i - 1) + c2.Column + 1).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(c1.Row, 3 * (i - 1) + c2.Column + 2).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(c1.Row, 3 * (i - 1) + c2.Column + 3).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True MsgBox (nbvide + 10 * (i - 1) + 1 + n) Feuil7.Select Cells(1, nbvide + 10 * (i - 1) + 1 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 2 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 3 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 4 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 5 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 6 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 7 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 8 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 9 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True Cells(1, nbvide + 10 * (i - 1) + 10 + n).Select ActiveCell.Columns.Select Selection.EntireColumn.Hidden = True End If n = 1 Next i
En espérant que cela vous aide à mieux comprendre mon problème,
Lulu
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
23 juil. 2012 à 11:06
23 juil. 2012 à 11:06
Re,
Je n'ai pas d'erreur!!!!!
Je n'ai pas d'erreur!!!!!
Pas de message d'erreur?
Pourtant je viens de relancer la macro et j'ai toujours un message d'erreur 1004 ...
C'est à n'y rien comprendre ...
Pourtant je viens de relancer la macro et j'ai toujours un message d'erreur 1004 ...
C'est à n'y rien comprendre ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai réduit la taille de mon code en faisant des boucles for et j'ai maintenant un code qui marche!
Je ne sais toujours pas où était l'erreur avant cependant ...
Merci de votre aide f894009
Je ne sais toujours pas où était l'erreur avant cependant ...
Merci de votre aide f894009
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
23 juil. 2012 à 11:31
23 juil. 2012 à 11:31
Re,
En attendant vous pouvez diminuez le nombre de lignes de code en faisant un bloc de colonnes a masquer par bloc de colonnes.
'exemple pour un bloc
'Colonne de debut
celdeb = Split(Cells(1, nbvide + 10 * (i - 1) + 1 + n).Address, "$")(1)
'Colonne de fin
celfin = Split(Cells(1, nbvide + 10 * (i - 1) + 10 + n).Address, "$")(1)
Columns(celdeb & ":" & celfin).Hidden = True
Pour votre erreur, je ne vois pas.
En attendant vous pouvez diminuez le nombre de lignes de code en faisant un bloc de colonnes a masquer par bloc de colonnes.
'exemple pour un bloc
'Colonne de debut
celdeb = Split(Cells(1, nbvide + 10 * (i - 1) + 1 + n).Address, "$")(1)
'Colonne de fin
celfin = Split(Cells(1, nbvide + 10 * (i - 1) + 10 + n).Address, "$")(1)
Columns(celdeb & ":" & celfin).Hidden = True
Pour votre erreur, je ne vois pas.
bonjour,
j'obtiens le même message d'erreur!
solution :
j'obtiens le même message d'erreur!
solution :
Sheets("Feuil7").Selectou
Sheets("Feuil7").Cells(1, nbvide + 10 * (i - 1) + 1 + n).SelectBonne suite
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
23 juil. 2012 à 11:59
23 juil. 2012 à 11:59
Bonjour Paf,
En effet, meme si je n'avais pas cette erreur, il faut preciser dans le code comme vous l'avez fait.
Bye
En effet, meme si je n'avais pas cette erreur, il faut preciser dans le code comme vous l'avez fait.
Bye
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
23 juil. 2012 à 12:13
23 juil. 2012 à 12:13
Re,
Non, car au debut du code j'ai en effet modifie le premier Feuil6.select par Worksheets("Feuli6").Select , a ma grande surprise, les autres lignes similaire ne sortaient pas en erreur et l'erreur de depart ne correspondait pas a celle citee.
Bye
Non, car au debut du code j'ai en effet modifie le premier Feuil6.select par Worksheets("Feuli6").Select , a ma grande surprise, les autres lignes similaire ne sortaient pas en erreur et l'erreur de depart ne correspondait pas a celle citee.
Bye