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 19/12/2011, 13h52   #1
Invité de passage
 
Inscription : septembre 2010
Messages : 3
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 3
Points : 0
Points : 0
Par défaut Copier des lignes suivant un indicateur

Bonjour à tous,

Je suis en train de créer une gestion de stock, je peux créer des produits, des fournisseurs et en faire la gestion.

Je souhaite créer un onglet "Approvisionnement", c'est à dire que dans cette onglet il y aura une liste qui me permettra de visualiser les produits étant égal ou inférieur au stock mini.

De ce fait, je souhaiterai copier toutes les lignes (colonnes A à J) de l'onglet (Excel) Produits dans l'onglet (Excel) Commandes en fonction du stock :
J'indique en colonne "I" le stock et en "J" le stock mini.

Quel code dois-je indiquer pour que les cellules - lignes se copient si "I"=<"J" de l'onglet "Produits" vers "Commandes" svp.

Mon test de fonctionnement :
Code :
1
2
3
If Worksheets("Produits").Cells(2, 10) >= Cells(2, 9) Then
    Worksheets("Commandes").Cells(2, 1) = Worksheets("Produits").Cells(2, 1)
    Worksheets("Commandes").Cells(2, 2) = Worksheets("Produits").Cells(2, 2)
Cela fonctionnement mais je ne sais pas comment copier une ligne (Cellule A à J) en fonction de "I"=<"J"

Merci d'avance pour vos réponses.

Vinz
vinzalex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 14h11   #2
Candidat au titre de Membre du Club
 
Inscription : mai 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 21
Points : 14
Points : 14
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim fintableau as integer
Dim i as integer
Dim j as integer
 
fintableau=1
 
While(fintableau+1,1)<>""
     fintableau=fintableau+1
Wend
 
j=1
 
For i=1 to fintableau
    sheets("Produits").select
    If cells(i,10)>=cells(i,10) then
         rows(i & ":" & i).select
         selection.copy
         sheets("Commandes").select
         cells(j,1).select
         Activesheet.paste
         j=j+1
    End if
Next i
Ca devrait faire l'affaire.
Fred.dz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 14h22   #3
Invité de passage
 
Inscription : septembre 2010
Messages : 3
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 3
Points : 0
Points : 0
Bonjour,

Merci pour cette réponse, j'aimerai quelques informations supplémentaires si possible stp :

Est-ce possible de l'insérer dans :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sub AfficherOnglet0()
Dim fintableau As Integer
Dim I As Integer
Dim J As Integer
 
fintableau = 1
 
Lst_51_Stock.ListIndex = -1
Lst_51_Stock.TopIndex = -1
 
While(fintableau+1,1)<>""
     fintableau = fintableau + 1
Wend
J = 1
For I = 1 To fintableau
    Sheets("Produits").Select
    If Cells(I, 10) >= Cells(I, 10) Then
         Rows(I & ":" & I).Select
         Selection.Copy
         Sheets("Commandes").Select
         Cells(J, 1).Select
         ActiveSheet.Paste
         J = J + 1
    End If
Next I
AppliquerFocus                                                                                    
End Sub
A quoi correspond : fintableau ?
Pour copier les cellules de A à J, je peux indiquer : ?
Pourquoi ai-j'ai une erreur sur la ligne de code :
Code :
While(fintableau+1,1)<>""
Merci d'avance.

Vinz
vinzalex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 14h28   #4
Candidat au titre de Membre du Club
 
Inscription : mai 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 21
Points : 14
Points : 14
Ca me parait pas impossible, mais je sais pas ce qu'est sensé faire AppliquerFocus.

Fintableau correspond à la dernière ligne de ton tableau qui à des valeurs. Pour l'erreur c'est normal, j'ai oublié "cells":

Code :
While cells(fintableau+1,1)<>""
Edit: je préciserais aussi que i et j ont rien à voir avec le "titre" des colonnes. Ce sont juste des variables de travail.
Fred.dz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 14h43   #5
Invité de passage
 
Inscription : septembre 2010
Messages : 3
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 3
Points : 0
Points : 0
Le AppliquerFocus met le curseur sur un bouton indiqué, comme ça si sur mon onglet VBA je n'ai qu'un bouton imprimé, j'ai juste à appuyer sur "entrée" pour valider.

Par contre je viens de finir d'intégrer le code, cela ne fonctionne pas, info supp : toute mon interface est faite sous VBA, donc tout est gérer en code avec une interface.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
fintableau = 1
 
Lst_51_Stock.ListIndex = -1                                                                         'Enlève la sélection dans la liste
Lst_51_Stock.TopIndex = -1                                                                          'Remonte la liste à la première ligne
 
While Cells(fintableau + 1, 1) <> ""
     fintableau = fintableau + 1
Wend
J = 1
For I = 1 To fintableau
    Sheets("Produits").Select
    If Cells(I, 10) >= Cells(I, 10) Then
         Rows(I & ":" & I).Select
         Selection.Copy
         Sheets("Commandes").Select
         Cells(J, 1).Select
         ActiveSheet.Paste
         J = J + 1
    End If
Next I
Ce code me sélectionne ma ligne d'entête et en bas d'excel c'est indique "entrée" pour copier.

Bizarre, dois-je modifier un ligne afin d'avoir directement les lignes concernées (ceux inférieur au stock mini) copier dans la feuille "Commandes" en A2 ?
A1 étant pour toutes mes feuilles l'entête des colonnes.

De plus
Code :
If Cells(I, 10) >= Cells(I, 10) Then
ca ne devrait pas être
Code :
If Cells(I, 10) >= Cells(I, 9) Then
?

Merci d'avance.

Vinz
vinzalex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 14h58   #6
Candidat au titre de Membre du Club
 
Inscription : mai 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 21
Points : 14
Points : 14
Pour ton bouton je saurais pas dire.

Par contre oui tu as repéré une erreur. Et si tu a les en-tête en 1ère ligne il faut que tu remplace j=1 par j=2.

Je viens de tester chez moi ça marche (ca fait un copier-coller des bons trucs), après t'as plus qu'à essayer de faire marcher via le bouton.
Fred.dz 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 20h12.


 
 
 
 
Partenaires

Hébergement Web