OVH Cloud OVH Cloud

Sélectionner une feuille et y insérer des données en fonction d'un critère

13 réponses
Avatar
zimou
Bonjour et meilleurs voeux pour l'ann=E9e 2008,
voil=E0 mons pbme.
j'ai une BD sur une feuille nomm=E9e "2007", maintenant nous somme en
2008, j'ai inser=E9 une feuille nomm=E9e "2008", et comme c'est le d=E9but
de l'ann=E9e j'ai des donn=E9es de l'ann=E9e 2007 qui sont donc =E0 ins=E9re=
r
dans la feuille "2007" et en m=EAme temps les donn=E9es 2008 commencent =E0
venir et je veux les ins=E9r=E9s dans "2008" bien s=FBr.
j'ai rajout=E9 le code suivant:
le crit=E8re choisi est : Z_Fab_date qu'est la date de fabrication.

If Z_Fab_date > ("01/01/2008") Then
ActiveWorkbook.Worksheets("2008").Activate
Worksheets("2008").Select
End If

avec ce bout de code j'arrive =E0 s=E9lectionner la feuille "2008", mais
les donn=E9es ne s'ajoutent ni =E0 la feuille 2008 ni =E0 2007.

ce que je veux, c'est d'ins=E9rer les donn=E9es 2008 dans la feuille 2008
et si elles sont de l'ann=E9e 2007, qu'elles soient ins=E9rer dans la
feuille 2007. sans aucune intervention de la personne qui fait la
saisie. tout avec VBA.

ci dessous le code entier.
merci d'avance.
Private Sub Ajouter_Click()

Dim Ligne As Long

Ligne =3D Range("A65536").End(xlUp).Row + 1


If Z_Fab_date > ("01/01/2008") Then
ActiveWorkbook.Worksheets("2008").Activate
Worksheets("2008").Select
End If

Range("A" & Ligne) =3D Nlot_Mp.Value
Range("B" & Ligne) =3D Z_N_Lot.Value
Range("C" & Ligne) =3D CDate(Z_Fab_date.Value)
Range("D" & Ligne) =3D CDate(Z_Date_Lib.Value)
Range("E" & Ligne) =3D Z_Quantite.Value
Range("G" & Ligne) =3D Z_delitement.Value
Range("F" & Ligne) =3D Z_Dissolution.Value
Range("H" & Ligne) =3D Z_Humidite.Value
Range("I" & Ligne) =3D Z_PM75.Value
Range("J" & Ligne) =3D Z_PM_n7.Value
Range("K" & Ligne) =3D Z_dos.Value

3 réponses

1 2
Avatar
Zimou
cette fois j'ai fais le test et ça marche,
même hière ça marchait et je me suis pas rendu compte, car sur la
feuille 2007, je suis à la ligne 70 et sur la 2008 à la ligne 2, mais la
Userforme ajoutait sur la feuille 2008 à la ligne 71 comme si c'atait la
feuille 2007, mais ce n'est pas grave il ma falu supprimer les lignes
vides et voilà.
merci Bruno
merci encore pour la patience.
amicalement
Dim Ligne As Integer
With Sheets(CStr(Year(Z_Fab_date.Text)))
.Select
Ligne = .Range("A65536").End(xlUp).Row + 1
.Range("A" & Ligne) = Nlot_Mp.Value
.Range("B" & Ligne) = Z_N_Lot.Value
.Range("C" & Ligne) = CDate(Z_Fab_date.Value)
.Range("D" & Ligne) = CDate(Z_Date_Lib.Value)
.Range("E" & Ligne) = Z_Quantite.Value
.Range("G" & Ligne) = Z_delitement.Value
.Range("F" & Ligne) = Z_Dissolution.Value
.Range("H" & Ligne) = Z_Humidite.Value
.Range("I" & Ligne) = Z_PM75.Value
.Range("J" & Ligne) = Z_PM_n7.Value
.Range("K" & Ligne) = Z_dos.Value
End With

au début j'ai rajouté .Select
A savoir qu'il est inutile de selectionner la feuille pour écrire.
une chose encore tes onglets doivent bien être nommés 2007 ou 2008 ou plus
CStr(Year(Z_Fab_date.Text)) renvoie seulement l'année de la date en valeur
texte.
Si tu ne là pas fait ceci verifie que la date rentrée soit correcte

Private Sub Z_Fab_date_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Z_Fab_date.Value = "" Then Exit Sub
If IsDate(Z_Fab_date.Value) = False Then
MsgBox "Rentrez une Date valide"
Cancel = True
End If
End Sub

Voilà
Youky

"zimou" a écrit dans le message de news:
%
Excuse moi du retard mais c'est Dimanche.
Je ne peux pas ouvrir le fichier de cjoint . ......Erreur! ! !dans le
lien
Ce n'est pas grave, on va faire sans...
Pour que cela fonctionne la macro doit connaitre la valeur de Z_Fab_date
Ca y est je viens de comprendre que Z_Fab_date est un textbox. . ..euréka
Essaye ceci si c'est bien un TextBox
Youky

Dim Ligne As Integer
With Sheets(CStr(Year(Z_Fab_date.Text)))
Ligne = .Range("A65536").End(xlUp).Row + 1
.Range("A" & Ligne) = Nlot_Mp.Value
.Range("B" & Ligne) = Z_N_Lot.Value
.Range("C" & Ligne) = CDate(Z_Fab_date.Value)
.Range("D" & Ligne) = CDate(Z_Date_Lib.Value)
.Range("E" & Ligne) = Z_Quantite.Value
.Range("G" & Ligne) = Z_delitement.Value
.Range("F" & Ligne) = Z_Dissolution.Value
.Range("H" & Ligne) = Z_Humidite.Value
.Range("I" & Ligne) = Z_PM75.Value
.Range("J" & Ligne) = Z_PM_n7.Value
.Range("K" & Ligne) = Z_dos.Value
End With



"zimou" a écrit dans le message de news:

UTILISER 31 COMME PW
merci
ci joint le fichier excel: http://cjoint.com/?bgmXXllUTg
merci

oui la variable 'Z_Fab_date = "01/01/2008" est plac?e au d?but du code
et je n'ai aucun m?ssage d'erreur.
merci
Tu es sur que la variable Z_Fab_date est mise ? jour
En d?but de macro essai de la lire
MsgBox Z_Fab_date
dans ma macro
'Z_Fab_date = "01/01/2008" il y a une apostrophe donc la ligne est
saut?e
Youky

"zimou" a ?crit dans le message de news:

Merci pour l'aide,
mais ce code ne fait pas mieux, je continu ? ins?rer dans la feuille
2007
merci

ci dessous le code complet, peut ?tre j'ai male copier

Private Sub Ajouter_Click()
Dim Ligne As Integer
'Z_Fab_date = "01/01/2008" 'la variable
With Sheets(CStr(Year(Z_Fab_date)))
Ligne = Range("A65536").End(xlUp).Row + 1
Range("A" & Ligne) = Nlot_Mp.Value
Range("B" & Ligne) = Z_N_Lot.Value
Range("C" & Ligne) = CDate(Z_Fab_date.Value)
Range("D" & Ligne) = CDate(Z_Date_Lib.Value)
Range("E" & Ligne) = Z_Quantite.Value
Range("G" & Ligne) = Z_delitement.Value
Range("F" & Ligne) = Z_Dissolution.Value
Range("H" & Ligne) = Z_Humidite.Value
Range("I" & Ligne) = Z_PM75.Value
Range("J" & Ligne) = Z_PM_n7.Value
Range("K" & Ligne) = Z_dos.Value

End With

End Sub

Salut bien,

Dim Ligne As Integer
'Z_Fab_date = "01/01/2008" 'la variable
With Sheets(CStr(Year(Z_Fab_date)))
Ligne = .Range("A65536").End(xlUp).Row + 1
.Range("A" & Ligne) = Nlot_Mp.Value
.Range("B" & Ligne) = Z_N_Lot.Value
.Range("C" & Ligne) = CDate(Z_Fab_date.Value)
.Range("D" & Ligne) = CDate(Z_Date_Lib.Value)
.Range("E" & Ligne) = Z_Quantite.Value
.Range("G" & Ligne) = Z_delitement.Value
.Range("F" & Ligne) = Z_Dissolution.Value
.Range("H" & Ligne) = Z_Humidite.Value
.Range("I" & Ligne) = Z_PM75.Value
.Range("J" & Ligne) = Z_PM_n7.Value
.Range("K" & Ligne) = Z_dos.Value
End With

ca doit le faire sans selectionner la feuille
remarque: Attention j'ai mis des points .
Youky
"zimou" a ?crit dans le message de news:

Bonjour et meilleurs voeux pour l'ann?e 2008,
voil? mons pbme.
j'ai une BD sur une feuille nomm?e "2007", maintenant nous somme en
2008, j'ai inser? une feuille nomm?e "2008", et comme c'est le d?but
de l'ann?e j'ai des donn?es de l'ann?e 2007 qui sont donc ? ins?rer
dans la feuille "2007" et en m?me temps les donn?es 2008 commencent ?
venir et je veux les ins?r?s dans "2008" bien s?r.
j'ai rajout? le code suivant:
le crit?re choisi est : Z_Fab_date qu'est la date de fabrication.

If Z_Fab_date > ("01/01/2008") Then
ActiveWorkbook.Worksheets("2008").Activate
Worksheets("2008").Select
End If

avec ce bout de code j'arrive ? s?lectionner la feuille "2008", mais
les donn?es ne s'ajoutent ni ? la feuille 2008 ni ? 2007.

ce que je veux, c'est d'ins?rer les donn?es 2008 dans la feuille 2008
et si elles sont de l'ann?e 2007, qu'elles soient ins?rer dans la
feuille 2007. sans aucune intervention de la personne qui fait la
saisie. tout avec VBA.

ci dessous le code entier.
merci d'avance.
Private Sub Ajouter_Click()

Dim Ligne As Long

Ligne = Range("A65536").End(xlUp).Row + 1


If Z_Fab_date > ("01/01/2008") Then
ActiveWorkbook.Worksheets("2008").Activate
Worksheets("2008").Select
End If

Range("A" & Ligne) = Nlot_Mp.Value
Range("B" & Ligne) = Z_N_Lot.Value
Range("C" & Ligne) = CDate(Z_Fab_date.Value)
Range("D" & Ligne) = CDate(Z_Date_Lib.Value)
Range("E" & Ligne) = Z_Quantite.Value
Range("G" & Ligne) = Z_delitement.Value
Range("F" & Ligne) = Z_Dissolution.Value
Range("H" & Ligne) = Z_Humidite.Value
Range("I" & Ligne) = Z_PM75.Value
Range("J" & Ligne) = Z_PM_n7.Value
Range("K" & Ligne) = Z_dos.Value





From - Sun
Merci

mais j'ai déjà testé et ça ne marche pas, les données sont insérées à la
feuille "2007" et la page "2008" n'est même pas selectionnée.
amicalement
bonne nuit











Avatar
zimou
Merci
PMO pour ton aide qui marche, & il y a aussi Youky qui ma donné un code
qui marche aussi.
merci encore à vous deux.
amicalement
Bonjour,

Essayez le code ci-dessous

ATTENTION
1) les instructions suivantes utilisent une conversion provoquée
(Cdate). Si l'un des champs (Z_Fab_date OU Z_Date_Lib)
n'est pas renseigné le programme plantera. C'est comme si
on avait l'instruction Cdate( ) "CDate de RIEN"

.Range("C" & Ligne) = CDate(Z_Fab_date.Value)
.Range("D" & Ligne) = CDate(Z_Date_Lib.Value)

2) le POINT ( . ) devant les instructions Range(xxx…) est
absolument indispensable
3) si l'année de la date entrée (Z_Fab_date) est différente
de 2007 ou 2008 le programme plantera. On fera référence
à une feuille inexistante. Prévoir un traitement d'erreurs.

'*******************
Private Sub Ajouter_Click()
Dim Ligne As Long
Dim S As Worksheet
Dim Annee As String
Annee = Year(CDate(Z_Fab_date))
Set S = ThisWorkbook.Sheets(Annee)
With S
Ligne = .Range("A65536").End(xlUp).Row + 1
.Range("A" & Ligne) = Nlot_Mp.Value
.Range("B" & Ligne) = Z_N_Lot.Value
.Range("C" & Ligne) = CDate(Z_Fab_date.Value)
.Range("D" & Ligne) = CDate(Z_Date_Lib.Value)
.Range("E" & Ligne) = Z_Quantite.Value
.Range("G" & Ligne) = Z_delitement.Value
.Range("F" & Ligne) = Z_Dissolution.Value
.Range("H" & Ligne) = Z_Humidite.Value
.Range("I" & Ligne) = Z_PM75.Value
.Range("J" & Ligne) = Z_PM_n7.Value
.Range("K" & Ligne) = Z_dos.Value
End With
End Sub
'*******************

Cordialement.

PMO
Patrick Morange




Avatar
zimou
Merci
PMO pour ton aide qui marche, & il y a aussi Youky qui ma donné un code
qui marche aussi.
merci encore à vous deux.
amicalement
zimou

Bonjour,

Essayez le code ci-dessous

ATTENTION
1) les instructions suivantes utilisent une conversion provoquée
(Cdate). Si l'un des champs (Z_Fab_date OU Z_Date_Lib)
n'est pas renseigné le programme plantera. C'est comme si
on avait l'instruction Cdate( ) "CDate de RIEN"

.Range("C" & Ligne) = CDate(Z_Fab_date.Value)
.Range("D" & Ligne) = CDate(Z_Date_Lib.Value)

2) le POINT ( . ) devant les instructions Range(xxx…) est
absolument indispensable
3) si l'année de la date entrée (Z_Fab_date) est différente
de 2007 ou 2008 le programme plantera. On fera référence
à une feuille inexistante. Prévoir un traitement d'erreurs.

'*******************
Private Sub Ajouter_Click()
Dim Ligne As Long
Dim S As Worksheet
Dim Annee As String
Annee = Year(CDate(Z_Fab_date))
Set S = ThisWorkbook.Sheets(Annee)
With S
Ligne = .Range("A65536").End(xlUp).Row + 1
.Range("A" & Ligne) = Nlot_Mp.Value
.Range("B" & Ligne) = Z_N_Lot.Value
.Range("C" & Ligne) = CDate(Z_Fab_date.Value)
.Range("D" & Ligne) = CDate(Z_Date_Lib.Value)
.Range("E" & Ligne) = Z_Quantite.Value
.Range("G" & Ligne) = Z_delitement.Value
.Range("F" & Ligne) = Z_Dissolution.Value
.Range("H" & Ligne) = Z_Humidite.Value
.Range("I" & Ligne) = Z_PM75.Value
.Range("J" & Ligne) = Z_PM_n7.Value
.Range("K" & Ligne) = Z_dos.Value
End With
End Sub
'*******************

Cordialement.

PMO
Patrick Morange




1 2