VBA EXCEL problème de boucle
Résolu/Fermé
llecarpentier
Messages postés
29
Date d'inscription
mercredi 1 juin 2011
Statut
Membre
Dernière intervention
5 juillet 2011
-
6 juin 2011 à 11:12
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 - 6 juin 2011 à 22:08
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 - 6 juin 2011 à 22:08
A voir également:
- VBA EXCEL problème de boucle
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Mise en forme conditionnelle excel - Guide
4 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
6 juin 2011 à 14:01
6 juin 2011 à 14:01
bonjour
sans tester
te donne la dernière ligne non vide dans la colonne A
et ensuite
sans tester
lig_fin=sheets("stock").cells(cell.rows,count,1).row
te donne la dernière ligne non vide dans la colonne A
et ensuite
With Sheets("synthese") .Range("G2:G" & lig_fin).Value = Workshee..... m^me punition pour les autres range
llecarpentier
Messages postés
29
Date d'inscription
mercredi 1 juin 2011
Statut
Membre
Dernière intervention
5 juillet 2011
6 juin 2011 à 14:22
6 juin 2011 à 14:22
Je te remercie pour ta réponse.
Si j'ai bien compris mon code doit ressembler à ça:
Sub RecupPhysicalAvailable()
lig_fin = Sheets("stock").Cells(cell.Rows, Count, 1).Row
With Sheets("synthese")
.Range("G2:G" & lig_fin).Value = WorksheetFunction.VLookup(.Range("B2:B65236").Value, Sheets("stock").Range("A:C"), 3, True)
End With
End Sub
si c'est le cas quand je le check une boite de dialogue s'ouvre disant "erreur d'execution 424 objet requis".
Si j'ai bien compris mon code doit ressembler à ça:
Sub RecupPhysicalAvailable()
lig_fin = Sheets("stock").Cells(cell.Rows, Count, 1).Row
With Sheets("synthese")
.Range("G2:G" & lig_fin).Value = WorksheetFunction.VLookup(.Range("B2:B65236").Value, Sheets("stock").Range("A:C"), 3, True)
End With
End Sub
si c'est le cas quand je le check une boite de dialogue s'ouvre disant "erreur d'execution 424 objet requis".
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 6/06/2011 à 14:32
Modifié par michel_m le 6/06/2011 à 14:32
excuse moi
faute de frappe
lig_fin = Sheets("stock").Cells(cells.Rows, Count, 1).Row
mais pourquoi utiliser toutes les lignes
Range("B2:B65236")
et pourquoi utiliser un vlookup ?
j'aurais tendance a écrire (non testé sur maquette)
ps: Excusez moi je n'avais pas dit bonjour
faute de frappe
lig_fin = Sheets("stock").Cells(cells.Rows, Count, 1).Row
mais pourquoi utiliser toutes les lignes
Range("B2:B65236")
et pourquoi utiliser un vlookup ?
j'aurais tendance a écrire (non testé sur maquette)
lig_fin = Sheets("stock").Cells(cells.Rows, Count, 1).end(xlup).row sheets("synthese").range(G2:G" & lig_fin)=Sheets("stock").range("C2:c" & lig_fin).value
ps: Excusez moi je n'avais pas dit bonjour
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
6 juin 2011 à 14:43
6 juin 2011 à 14:43
décidement !!! :-(
essai sur maquette qui marche
adapter les noms des feuilles
essai sur maquette qui marche
lig_fin = Sheets(2).Cells(Cells.Rows.Count, 1).End(xlUp).Row Sheets(1).Range("G2:G" & lig_fin) = Sheets(2).Range("C2:c" & lig_fin).Value
adapter les noms des feuilles
llecarpentier
Messages postés
29
Date d'inscription
mercredi 1 juin 2011
Statut
Membre
Dernière intervention
5 juillet 2011
6 juin 2011 à 14:30
6 juin 2011 à 14:30
Comme je n'ai pas totalement compris le principe, je l'ai tenté aussi de la manière suivante.
Sub RecupPhysicalAvailable()
lig_fin = Sheets("stock").Cells(cell.Rows, Count, 1).Row
With Sheets("synthese")
.Range("G2:G" & lig_fin).Value = WorksheetFunction.VLookup(.Range("B2:B" & lig_fin).Value, Sheets("stock").Range("A:C" & lig_fin), 3, True)
End With
End Sub
Malheureusement le message d'erreur est le même.
Sub RecupPhysicalAvailable()
lig_fin = Sheets("stock").Cells(cell.Rows, Count, 1).Row
With Sheets("synthese")
.Range("G2:G" & lig_fin).Value = WorksheetFunction.VLookup(.Range("B2:B" & lig_fin).Value, Sheets("stock").Range("A:C" & lig_fin), 3, True)
End With
End Sub
Malheureusement le message d'erreur est le même.
Le Pingou
Messages postés
12182
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
7 novembre 2024
1 448
6 juin 2011 à 22:08
6 juin 2011 à 22:08
Bonjour,
Juste au passage, remplacer la virgule par le point entre Rows et Count dans la formule de michel_m
lig_fin = Sheets("stock").Cells(cell.Rows.Count, 1).Row
Salutations
Juste au passage, remplacer la virgule par le point entre Rows et Count dans la formule de michel_m
lig_fin = Sheets("stock").Cells(cell.Rows.Count, 1).Row
Salutations
llecarpentier
Messages postés
29
Date d'inscription
mercredi 1 juin 2011
Statut
Membre
Dernière intervention
5 juillet 2011
6 juin 2011 à 15:09
6 juin 2011 à 15:09
Je suis désolé mais ça ne marche pas. Il m'écris erreur de compilation et surligne le « : » entre G2 et G.
Cependant je ne sais pas si j'ai été tout à fait clair sur mon problème.
Mettons que le tableau stock soit designé de la manière suivante
Numéro d'article/ groupe d'article/ Stock dispo
1000045/ surgelé/ 149
1000789/ frais/ 54
... ... / ...
1145852 / conserve/ 810
Le nombre de ligne varie chaque fois que j'actualise cette feuille.
Le tableau synthèse regroupe des éléments venant en partie de la feuille « stock » et se profile ainsi :
Groupe d'article/Numéro d'article/Quantité requise/nom d'article/statut/référence
Surgelé/1000045/121/glace vanille/en attente/destock
Frais/1000789/58/tomate/en attente/destock
.../.../.../.../.../...
Conserve/1145852/723/en attente/destock
« En attente » et « destock » sont des constantes. C'est dans une colonne à coté de référence que je souhaite placer « stock dispo ».
L'ordre et le nombre de numéro d'article ne sont pas les mêmes entre les deux feuilles. C'est la raison pour laquelle j'utilise un VLookup. En gros je veux que G1 « synthese » = C ? « stock » quand B1 « synthese »= B ? « stock ».
Or, je souhaite que ma fonction de recherche soit entièrement automatique et qu'elle dépende de la dimension de ma feuille « synthèse » qui varie selon la feuille stock.
Jusqu'à maintenant je définie de grande plage même quand mes cellule source sont vide ce qui crée des erreur dans ma colonne G de type #N/A.
Je ne sais pas si j'ai été clair. C'est déjà pas simple pour moi...
Cependant je ne sais pas si j'ai été tout à fait clair sur mon problème.
Mettons que le tableau stock soit designé de la manière suivante
Numéro d'article/ groupe d'article/ Stock dispo
1000045/ surgelé/ 149
1000789/ frais/ 54
... ... / ...
1145852 / conserve/ 810
Le nombre de ligne varie chaque fois que j'actualise cette feuille.
Le tableau synthèse regroupe des éléments venant en partie de la feuille « stock » et se profile ainsi :
Groupe d'article/Numéro d'article/Quantité requise/nom d'article/statut/référence
Surgelé/1000045/121/glace vanille/en attente/destock
Frais/1000789/58/tomate/en attente/destock
.../.../.../.../.../...
Conserve/1145852/723/en attente/destock
« En attente » et « destock » sont des constantes. C'est dans une colonne à coté de référence que je souhaite placer « stock dispo ».
L'ordre et le nombre de numéro d'article ne sont pas les mêmes entre les deux feuilles. C'est la raison pour laquelle j'utilise un VLookup. En gros je veux que G1 « synthese » = C ? « stock » quand B1 « synthese »= B ? « stock ».
Or, je souhaite que ma fonction de recherche soit entièrement automatique et qu'elle dépende de la dimension de ma feuille « synthèse » qui varie selon la feuille stock.
Jusqu'à maintenant je définie de grande plage même quand mes cellule source sont vide ce qui crée des erreur dans ma colonne G de type #N/A.
Je ne sais pas si j'ai été clair. C'est déjà pas simple pour moi...
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 7/06/2011 à 07:16
Modifié par michel_m le 7/06/2011 à 07:16
hé! ho! :-)
pourtant j'avais rectifié lien #5
ig_fin = Sheets("stock").Cells(cells.Rows. Count, 1).end(xlup).row
qui + est, j'avais testé sur une maquette et c'était Ok
Maintenant, fais ce que tu veux....
pourtant j'avais rectifié lien #5
ig_fin = Sheets("stock").Cells(cells.Rows. Count, 1).end(xlup).row
qui + est, j'avais testé sur une maquette et c'était Ok
Maintenant, fais ce que tu veux....