Macro sous excel

splin37 Messages postés 2 Date d'inscription mercredi 6 décembre 2006 Statut Membre Dernière intervention 10 août 2008 - 8 août 2008 à 10:44
splin37 Messages postés 2 Date d'inscription mercredi 6 décembre 2006 Statut Membre Dernière intervention 10 août 2008 - 10 août 2008 à 15:52
bonjour;
on m'a donné une macro a faire qui à partir d'une liste déroulante qui propose les mois de l'année importe des données qui sont sur la même feuille dans un tableau.voici le code :
Sub Mise_a_jour_des_donnees()
'Copie des données mensuelles depuis tableau de données annuelles
'Macro écrite le 22/07/2008,


Dim Selection_mois, Colonne, Ligne, Temp, Tableau, Mois, Y1, Y2, Debut_zone_trouvée, Fin_zone_trouvée


'Récupération du mois sélectionné
Selection_mois = Feuil14.Range("AF20").Value


' Affichage du titre
Feuil14.Range("A7").Value = Feuil14.Cells(19 + Selection_mois, 31)
Feuil14.Range("D7").Value = Selection_mois & "/1" & "/2008"
Nbr_de_jour_dans_le_mois = Day(DateAdd("d", -1, DateAdd("m", 1, DateSerial(2008, Selection_mois, 1))))
Feuil14.Range("H7").Value = Selection_mois & "/" & Nbr_de_jour_dans_le_mois & "/2008"


'Cellule initiale  // a quoi correspondent la colonne et ligne.
Colonne = 18 
Ligne = 200
Fin_zone_trouvée = 0
Debut_zone_trouvée = 0


Do While (Fin_zone_trouvée <> 1) And (Ligne > 18)


    'Récupération du contenu de la cellule
    Temp = Feuil14.Cells(Ligne, Colonne)
   
    If Temp <> "" Then
        'Extraction du mois
        Tableau = Split(Temp, "/")
        Mois = Tableau(1)
   
        'Détermination de la ligne de début de zone        If (Val(Mois) Selection_mois) And (Debut_zone_trouvée 0) Then
            Y1 = Ligne
            Debut_zone_trouvée = 1
        End If
   
        'Détermination de la cellule de fin de zone
        If (Debut_zone_trouvée = 1) And (Selection_mois <> Val(Mois)) Then
            Y2 = Ligne + 1
            Fin_zone_trouvée = 1
        End If
   
    End If


    Ligne = Ligne - 1


Loop


' Si la cellule de fin de zone n'est pas trouvée, par défaut Y2=18
If Fin_zone_trouvée = 0 Then
    Y2 = 18
End If


X = 12
For n = Y2 To Y1
X = X + 1
    'Copie des donnees
    For i = 1 To 13
    Temp = Feuil14.Cells(n, 16 + i)
    Feuil14.Cells(X, i) = Temp
    Next
Next


' Compléte par des 0
For n = X + 1 To 29
    For i = 1 To 13
    Feuil14.Cells(n, i) = "-"
    Next
Next


End Sub

ce code ci marche sur une feuille et je dois le refaire pour quatre autre feuilles cependant les mois sont décalés et je n'ai toujours pas compris certaines lignes du programmes.
Je peux envoyer le fichier en question ce sont des données de chimique en laboratoire à gérer.

merci de votre aide
splin

2 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
8 août 2008 à 17:30
Salut,

explique : je dois le refaire pour quatre autre feuilles cependant les mois sont décalés

A+
0
splin37 Messages postés 2 Date d'inscription mercredi 6 décembre 2006 Statut Membre Dernière intervention 10 août 2008
10 août 2008 à 15:52
tu peux m'envoyer ton adresse? je t'envoie mon fichier.
splin
0
Rejoignez-nous