Ajout automatique de colonnes au tableau
Bonsoir,
oui il existe un moyen...
L'ajout du produit de la colonne C doit-il se faire avant la colonne MONTANT ou avant le premier produit de la colonne F ?
@ bientôt
LouReeD
Bonjour, merci de l'intérêt que vous portez au sujet. Oui, l'ajout se fait toujours avant une colonne MONTANT, que ce soit lors du référencement du produit à partir d'une colonne C ou F
Bonsoir,
une solution, mais elle n'est pas pérenne au niveau des formules en cas de suppression de colonne :
@ bientôt
LouReeD
Merci 👍 je reviendrai après avoir essayé
Bonjour, bonne idée 👏👏👏 J'ai seulement besoin de copier les valeurs des cellules adjacentes. Exemple lors de l'écriture dans la cellule C5 les colonnes sont ajoutées et les cellules A5 et b5 sont copiées et lors de l'écriture dans la colonne F les cellules E et D sont copiées Merci merci beaucoup pour l'aide
Bien que je ne comprenne toujours pas l'idée de ne pas supprimer de colonnes, je vais essayer de m'adapter à la situation😁😁😁
Bonsoir,
voici le code (avec ajout de commentaires) pour ajouter ces deux valeurs :
Private Sub Worksheet_Change(ByVal Target As Range)
' on arrête la mise à jour de l'écran
Application.ScreenUpdating = False
' on définit des variables
Dim AncValeur, NouvValeur, Cel, Col
Dim rRange
' si la cellule qui vient d'être modifiée et qu'il y a bien qu'une cellule de modifiée
If Not Intersect(Target, Range("C5:C15,F5:F15")) Is Nothing And Target.CountLarge = 1 Then
' on arrête la surveillance événementielle, car on va modifier des cellules et cela empêche les boucles infinies
Application.EnableEvents = False
' on met en mémoire la valeur qui vient d'être inscrite dans la cellule
NouvValeur = Target
' on fait un UNDO pour revenir à la situation avant modification
Application.Undo
' on met en mémoire l'ancienne valeur de la cellule
AncValeur = Target.Value
' si l'ancienne valeur était "à rien" et que la nouvelle est différente de rien
If AncValeur = "" And NouvValeur <> "" Then
' ajout des deux colonnes
'************************
' on réécrit la nouvelle valeur
Target = NouvValeur
' on recherche de la colonne "Montant"
Set Cel = Sheets("1").Range("3:3").Find("MONTANT")
' si l'on trouve la cellule "MONTANT"
If Not Cel Is Nothing Then
' on garde en mémoire sa valeur qui fatalement changera au moment de l'ajout des colonnes
Col = Cel.Column
' on boucle 12 fois pour les douze feuilles
For i = 1 To 12
' avec la feuille du nom i (ici j'ai ajouté des doubles guillemet mais autant ils sont inutiles
With Sheets("" & i & "")
' on active la feuille
.Activate
' on sélectionne les deux colonnes à gauche de la colonne MONTANT
.Range(.Cells(3, Col - 2), .Cells(15, Col - 1)).Select
' on copie
Selection.Copy
' on insert avec un décalage vers la droite
Selection.Insert Shift:=xlToRight
' on supprime le cadre de sélection copie
Application.CutCopyMode = False
' dans la cellule fusionnée d'entête on met la valeur de la cellule modifiée
.Range(.Cells(3, Col), .Cells(3, Col + 1)).Value = Target
' dans les deux cellules d ela ligne du dessous on met la valeur des cellules de droites
.Cells(4, Col).Value = Target.Offset(, -2).Value
.Cells(4, Col + 1).Value = Target.Offset(, -1).Value
' arbitrairement on sélectionne la cellule A1 de cette feuille
.Cells(1, 1).Activate
' on a fini avec cette feuille
End With
' on passe à la feuille suivante s'il en reste
Next i
' on revient sur la feuille "Data"
Sheets("data").Activate
End If
' sinon
Else
' et bien on ne fait rien et dans la cellule concernée par le changement d evaleur on retrouve la valeur initiale !
End If
' on réactive la surveillance événementielle
Application.EnableEvents = True
End If
End Sub
Pas de test de présence de valeur, et toujours pas de gestion de suppression de colonne ou de valeurs en double ou de suppression de valeur en colonne C ou F etc...
@ bientôt
LouReeD