Sdbswiss
Messages postés11Date d'inscriptionmardi 10 avril 2007StatutMembreDernière intervention12 septembre 2007
-
23 mai 2007 à 09:30
Sdbswiss
Messages postés11Date d'inscriptionmardi 10 avril 2007StatutMembreDernière intervention12 septembre 2007
-
23 mai 2007 à 16:34
Bonjour à tous,
J'ai un problème avec le code d'un fichier excel. Le problème est simple mais l'explication l'ai moins. Bon je me lance:
Le fichier excel est une base de donnée contenant plusieurs feuilles, une pour toutes les données saisies et 11 autres reprenant certaines données en fonction d'un critère (une feuille pour un critère).
Les informations sont saisies dans un UserForm.
Lorsque le UserForm est validé, les informations sont inscrites dans la 1ère feuille, ainsi que dans la feuille au critère correspondant.
(J'espère que c'est claire)
Mon problème est que certaines informations vont s'inscrire dans plusieurs feuilles et ceci de façon irregulière (un coup ça le fait, un coup ça le fait pas).
Voici à quoi resemble le code du UserForm:
Private Sub OK_Click()
UserForm1.Hide 'cache le formulaire
Sheets("Feuille1").Activate 'affiche la feuille 1
num = Sheets("Feuille1").Range("A65536").End(xlUp).Row + 1 'recherche la dernière ligne vide de la feuille 1
'inscription des données saisies dans le formulaire dans la feuille 1.
'Range désigne la colone et la ligne où vont s'iscrire les données.
'La ligne est désigné par la variable "num" dont la valeur est déterminé par la fonction précédente
'transfère des données saisies en fonction de l'Info4 ou de l'Info8
'Cas de la feuille 2
If Range("I" & num).Value = "Critère1" Then'condition pour que l'inscription s'effectue
Sheets("Feuille2").Activate
num = Sheets("Feuille2").Range("A65536").End(xlUp).Row + 1
Range("A" & num).Value = Info1.Text
Range("B" & num).Value = Info3.Text
Range("U" & num).Value = Info5.Text
Sheets("Feuille1").Activate
End If
'Cas de la feuille 3
If Range("I" & num).Value = "Critère2" Then
Sheets("Feuille3").Activate
num = Sheets("Feuille3").Range("A65536").End(xlUp).Row + 1
Range("A" & num).Value = Info1.Text
Range("B" & num).Value = Info3.Text
Range("S" & num).Value = Info6.Text
Range("T" & num).Value = Info11.Text
Range("U" & num).Value = Info5.Text
Sheets("Feuille1").Activate
End If
'Cas des feuilles 4
If Range("E" & num).Value = "Critère3" Then
Sheets("Feuille4").Activate
num = Sheets("Feuille4").Range("A65536").End(xlUp).Row + 1
Range("A" & num).Value = Info1.Text
Range("B" & num).Value = Info6.Text
Range("C" & num).Value = Info7.Text
Range("O" & num).Value = Info11.Text
Sheets("Saisie").Activate
End If
....etc,etc...
End Sub
Mes notion de code VBA sont plus que basique, je sait qu'il est possible de faire des boucles pour ne pas avoir à répéter le même code, mais je n'ai pas réussi à le faire. Mon problème vien peut-être de la??
J'espère avoir été assez claire dans mon explication.
En vous remerciant d'avance,
Swiss, la petite souris blanche perdu dans les codes.
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 23 mai 2007 à 11:39
bonjour,
Dans tes textes 4 et 8 il faut entrer CritèreX ? ou les critères sont prédéfinis ?.
Il y aurait quelques améliorations a faire mais vu que les données copiées dans les feuilles sont différentes ton code peu rester tel quel.
Pour éviter l'inscription dans plusieur feuille mettre exit sub à la fin de chaque test de CritèreX.
A+
louis