XL 2013 Garder colonne vide entre deux colonnes (Modification VBA)

susaita

XLDnaute Occasionnel
Bonjour à tous,
dans l'exemple en attaché j'ai un suivi eau/Elec et à chaque fin de mois en cliquant sur le bouton (ajouter un mois) il me crée une autre colonne en copiant les formules
maintenant ce que je souhaite avoir c'est
1***quand je cliquer sur ajouter un mois la colonne qui s'ajoute serait en E et la colonne F se décale en G, autrement dit garder une colonne vide entre la colonne du dernier mois ajouté et la colonne Total
2***la formule somme qui se trouve sur F11, F12,F20 et F21 soit variable c'est à dire qu'elle prenne en considération les colonnes qui se rajouteront par la suite
(exemple si je rajoute un mois dans la colonne E la formule dans F11=somme(D11:E11)

Cordialement
Susaita
 

Pièces jointes

  • Suivi susaita.xlsm
    19.1 KB · Affichages: 45

susaita

XLDnaute Occasionnel
re,
Merci jacky, mapomme pour les formules
maintenant pour la suppression le code de double clique proposé par jacky me convient mais il doit interdire de supprimer un autre mois sauf le dernier, par exemple si on double clique sur un autre mois qui n'est pas le dernier un message doit s'afficher en interdisant la suppression

Cordialement
Susaita
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous,

Une version v5 qui gère l'ajout de colonne, la suppression par double-clique et les messages à l'utilisateur.
Le code est le module de Feuil1:
VB:
Option Explicit

' La cellule de la ligne 8 et contenant le texte "TOTAL"
' a été nommée CellTOTAL

Sub AjouterMois()
Dim C As Range
  Set C = Range("CellTOTAL").Offset(, -2).Resize(15)
  C.Offset(, 1).Insert shift:=xlShiftToRight
  C.Copy C.Offset(, 1)
  Union(C(2, 2).Resize(2), C(5, 2), C(11, 2).Resize(2), C(14, 2)).ClearContents
  Application.CutCopyMode = False
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim C As Range
  Set C = Range(Range("d8"), Range("CellTOTAL").Offset(, -2))
  If Not Intersect(Target, C) Is Nothing Then
    Cancel = True
    If Target.Column = Range("CellTOTAL").Offset(, -2).Column Then
      If Target.Column = 4 Then
        MsgBox "Cette colonne ne peut pas être effacée!", _
               vbExclamation + vbOKOnly
      Else
        Target.Resize(15).Delete xlShiftToLeft
      End If
    Else
      MsgBox "Seule la colonne " & Range("CellTOTAL").Offset(, -2) & _
             " peut-être effacée!", vbExclamation + vbOKOnly
    End If
  End If
End Sub
 

Pièces jointes

  • susaita- Suivi- v5.xlsm
    23.2 KB · Affichages: 32

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour susaita,
(...) sauf que si je sélectionne n'importe quelle colonne je peux la supprimer facilement...y'a t'il moyen de l'interdire aussi ? (...)

A un moment donné, il vaut mieux éduquer l'utilisateur que d'essayer à contrer toutes les fausses manip qu'il peut faire (l'utilisateur a toujours plus d'imagination que le pondeur de code !:mad: )

En attendant, je me suis amusé à pondre un essai de code qui empêche la suppression des colonnes par l'interface d'Excel sans utiliser la protection de feuille. C'est juste pour le FUN. D'autres pourront essayer d'autres méthodes.
 

Pièces jointes

  • susaita- Suivi- v6.xlsm
    28.1 KB · Affichages: 33
Dernière édition:

Discussions similaires

Réponses
8
Affichages
695
Réponses
50
Affichages
5 K

Statistiques des forums

Discussions
312 594
Messages
2 090 090
Membres
104 373
dernier inscrit
rayanabd