Insertion ligne excel VBA
freedix
Messages postés
20
Statut
Membre
-
freedix Messages postés 20 Statut Membre -
freedix Messages postés 20 Statut Membre -
Bonjour,
J'ai besoin d'aide pour créer une macro sous excel...
Mon problème est le suivant, j'ai un tableau avec une groupe de colonnes qui désigne la date (colonne A: le jour, colonne B: no de la semaine, colonne C: no du mois)... les colonnes de D à U contiennet diverses données...
J'aimerai créer une macro qui insère une ligne automatiquement dès que le no de la semaine et du mois change. Le but étant d'inscrire les moyennes hebdomadaires et mensuels des valeurs entrées en colonne T et U.
Est-il possible de créer une macro pour faire ça? (sachant que le nombre de lignes remplie par jour peut varier...)
J'ai besoin d'aide pour créer une macro sous excel...
Mon problème est le suivant, j'ai un tableau avec une groupe de colonnes qui désigne la date (colonne A: le jour, colonne B: no de la semaine, colonne C: no du mois)... les colonnes de D à U contiennet diverses données...
J'aimerai créer une macro qui insère une ligne automatiquement dès que le no de la semaine et du mois change. Le but étant d'inscrire les moyennes hebdomadaires et mensuels des valeurs entrées en colonne T et U.
Est-il possible de créer une macro pour faire ça? (sachant que le nombre de lignes remplie par jour peut varier...)
5 réponses
Voilà un petit code tout simple
le principe est le suivant je regarde la différence de n° de semaine et la différence
de numéro de mois
si la fin de semaine tombe une fin de mois il y aura deux insertions.
A+
Bidouilleu_R
le principe est le suivant je regarde la différence de n° de semaine et la différence
de numéro de mois
si la fin de semaine tombe une fin de mois il y aura deux insertions.
A+
Bidouilleu_R
Sub ajoutligne_sem_mois()
Dim DerLig As Long
Dim InsereSemaine As Boolean
Dim InsereMois As Boolean
Sheets("feuil1").Select ' on se place sur la feuille
' où l'on veut inérer les ligness...
DerLig = Range("A65535").End(xlUp).Row
InsereSemaine = False
InsereMois = False
For i = 2 To DerLig
DerLig = Range("A65535").End(xlUp).Row
If Cells(i, 2).Value <> Cells(i + 1, 2).Value Then
'on teste si la semaine change
InsereSemaine = True
End If
If Cells(i, 3).Value <> Cells(i + 1, 3).Value Then
InsereMois = True
End If
If InsereSemaine Or InsereMois Then
If InsereSemaine And InsereMois Then
Rows(i + 1).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
i = i + 2
Else
' une seule insertion
Rows(i + 1).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
i = i + 1
End If
' pas d'insertion
End If
InsereSemaine = False
InsereMois = False
Next
cells(1,1).select
End Sub
bonjour,
un peu à la bourre mais c'est lundi
insère ligne au changement de semaine OU de mois
un peu à la bourre mais c'est lundi
insère ligne au changement de semaine OU de mois
Const lig As Byte = 2 'ligne de départ
Sub separer_semaines_et_mois()
Application.ScreenUpdating = False
separer 2
separer 3
End Sub
Sub separer(col As Byte)
derlig = Cells(65536, col).End(xlUp).Row
'liste les changements
niveau = Cells(lig, col)
For cptr = 1 To derlig
test = lig + cptr
If Cells(lig + cptr, col) > niveau And Cells(lig + cptr - 1, col) <> "" Then
liste = liste & lig + cptr & ":" & lig + cptr & ","
niveau = Cells(lig + cptr, col)
End If
Next
'------insère les lignes
Range(Left(liste, Len(liste) - 1)).Insert
End Sub
Merci beaucoup pour vos propositions...
J'ai essayé les deux, mais il semble y avoir une erreur, Vb m'affiche ce message "la méthode Insert de la classe range à échoué". Et quand je clique sur "débogage", VB me surligne en jaune la ligne 25 du programme de Bidouilleu_R et la ligne 24 sur celui de michel_m.
Vous voyer d'où ça peut venir? La même erreur dans les 2 programmes, c'est surement moi qui ai mal fait la manip...??
Merci pour votre aide.
J'ai essayé les deux, mais il semble y avoir une erreur, Vb m'affiche ce message "la méthode Insert de la classe range à échoué". Et quand je clique sur "débogage", VB me surligne en jaune la ligne 25 du programme de Bidouilleu_R et la ligne 24 sur celui de michel_m.
Vous voyer d'où ça peut venir? La même erreur dans les 2 programmes, c'est surement moi qui ai mal fait la manip...??
Merci pour votre aide.
Je viens de trouver l'erreur... ce cou ci ça fonctionne, j'avais protéger certaine colonnes du document par un mot de passe... je viens d'enlever la protection et ça merche!
J'en profite pour te poser une autre question... est-ce qu'il est possible de faire en sorte que la ligne insérée ait une mise en page différente des autres (en gros il faudrait que les cellules de A a S soient fusionnée et grisées et qu'on affiche total semaine, ou total mois dedans...). Tu vois ce que je veux dire?
En tout cas merci beaucoup pour ton aide, j'aurais jamais pu faire un tel programme tout seul!
J'en profite pour te poser une autre question... est-ce qu'il est possible de faire en sorte que la ligne insérée ait une mise en page différente des autres (en gros il faudrait que les cellules de A a S soient fusionnée et grisées et qu'on affiche total semaine, ou total mois dedans...). Tu vois ce que je veux dire?
En tout cas merci beaucoup pour ton aide, j'aurais jamais pu faire un tel programme tout seul!
Bon, c'est plus compliqué que ce que j'imaginais... grâce au programme de michel les lignes s'insèrent lorsqu'on éxecute la macro à chaque changement de mois ou de semaines, mais à l'origine, j'aurais préférer que la macro s'éxécute au fur et à mesure du remplissage du tableau sans qu'on ait à l'éxécuter manuellement... j'ai essayé une seconde macro:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call separer_semaines_et_mois
End Sub
mais ça marche pas... et il n'est, apparemment, pas possible d'insérer une ligne avec un format particulier... tant pis! C'est déjà pas mal
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call separer_semaines_et_mois
End Sub
mais ça marche pas... et il n'est, apparemment, pas possible d'insérer une ligne avec un format particulier... tant pis! C'est déjà pas mal
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Finalement j'ai opter pour une autre solution qui je pense sera plus simple! J'ai inséré 2 colonnes à la fin de mon tableau (à droite). Une colonne "Moyenne Semaine" et une colonne "Moyenne mois"...
Il me rete à trouver un programme qui puisse me calculer ces moyennes... Mais ça devrait être plus simple!
En tout cas, merci pour votre aide!
Finalement j'ai opter pour une autre solution qui je pense sera plus simple! J'ai inséré 2 colonnes à la fin de mon tableau (à droite). Une colonne "Moyenne Semaine" et une colonne "Moyenne mois"...
Il me rete à trouver un programme qui puisse me calculer ces moyennes... Mais ça devrait être plus simple!
En tout cas, merci pour votre aide!