A voir également:
- Vba insert row
- Touche insert - Guide
- Disk boot failure insert system disk and press enter - Guide
- Accéder à la fonction secondaire "insert" de ma touche "Delete" - Forum PC portable
- Excel compter cellule couleur sans vba - Guide
- Insert boot media in selected boot device and press a key ✓ - Forum Windows 10
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!