Revenir à l'état initial d'un tableau

Bonjour, je suis à la recherche d'une macro permettant de revenir à l'état initial d'un tableau après avoir utiliser une macro qui va modifier sa forme, je mets ci dessous le code de la première macro qui sert donc à ajouter de nouvelles colonnes dans mon tableau en copiant et supprimant les anciennes en très large il y a aussi une notion de quantités :

Sub AjouterQuantitesEtColonnes()
Dim quantite As Integer
Dim i As Integer
Dim hasPreviousData As Boolean
hasPreviousData = Not IsEmpty(Sheets("Chiffrage COLONNE").Range("A1").Value)

If hasPreviousData Then
ResetDonneesPrecedentes
End If

quantite = InputBox("Entrez le nombre de quantités :", "Ajouter des quantités")

If IsNumeric(quantite) And quantite > 0 Then
On Error Resume Next
For i = 1 To quantite
Sheets("Chiffrage COLONNE").Cells(1, i).EntireColumn.Hidden = False
Sheets("Chiffrage COLONNE").Cells(1, i).Value = InputBox("Entrez la quantité " & i & " :", "Quantité")
Next i
Sheets("Colonne").UsedRange.EntireColumn.Hidden = False
Else
MsgBox "Veuillez entrer un nombre de quantités valide.", vbExclamation
Exit Sub
End If

Dim nbColonnes As Integer
Dim j As Integer
Dim lettreColonne As String
nbColonnes = quantite

If nbColonnes > 0 Then
For j = 73 To 61 Step -1
If j <> 68 And j <> 69 And j <> 70 And j <> 71 Then
For i = 1 To nbColonnes
Columns(j + i).Insert Shift:=xlToLeft
Columns(j).Copy Destination:=Columns(j + i)
Cells(8, j + i).Value = Sheets("Chiffrage COLONNE").Cells(1, i).Value
Next i
Columns(j).Delete
End If
Next
MsgBox nbColonnes & " colonnes ont été ajoutées avec succès.", vbInformation, "Ajout de colonnes"
isInitialized = True
End If
End Sub

Sub ResetDonneesPrecedentes()
Dim i As Integer
Dim lastColumn As Integer
lastColumn = Sheets("Chiffrage COLONNE").Cells(1, Columns.Count).End(xlToLeft).Column

For i = 1 To lastColumn
Sheets("Chiffrage COLONNE").Cells(1, i).ClearContents
Next i
End Sub

Edit modo : code à mettre entre balises avec le bouton </> merci d'y faire attention la prochaine fois

Si quelqu'un a une petit idée de la macro nécessaire pour réussir a faire revenir le tableau à l'état initial, j'ai essayé en faisant le chemin inverse mais vu qu'il y a une suppression de colonnes puis un ajout cela se complique.

Merci d'avance à celui qui prendra le temps, Bonne soirée !

Bonsoir,

copiez la feuille dans le classeur en la masquant, modifiez votre tableau, pour revenir à l'original il suffit de supprimer la feuille modifiées et de faire réapparaitre celle sauvegardée. Enfin c'est le principe, à voir comment gérer tout ceci.

@ bientôt

LouReeD

Bonjour et

Petit rappel de la CHARTE à lire

  • Pour plus de lisibilité, utilisez la fonctionnalité (bouton) </> pour insérer vos codes VBA (et si possible aussi pour vos formules Excel).

Merci d'y faire attention SVP

Edit : bonsoir LouReeD

Hey bonjour BrunoM45 !

On ne se croise pas trop souvent ces derniers temps !

Bonne fin de soirée.

@ bientôt

LouReeD

Bonsoir @LouReeD merci pour votre réponse, je comprends votre raisonnement et il fonctionne, cependant j'aimerais pouvoir l'automatiser avec une macro VBA affecter directement à un bouton dans ma feuille, je ne sais même pas si la requête est possible je vais continuer de chercher de mon côté et si quelqu'un passe par là avec une idée de réponse ça serait avec plaisir !

En tout cas merci pour le temps accordé, bonne soirée !

Bonsoir @BrunoM45 merci pour le message d'accueil, je vais relire la charte pas de problème !

bonjour BrunoM45,LouReed,bbclamale,

Sub Backup_Feuille()
     Dim Nom   As String
     With ActiveSheet                        'feuille active
          Nom = .Name                        'son nom
          .Copy After:=Sheets(Nom)           'créer copie de la feuille
          With ActiveSheet                   'la nouvelle feuille
               .Name = Left(Nom, 17) & Format(Now, "_yymmdd_hhmmss")     'renommer avec date & heure (résultat = max 31 charactères)
               .Visible = False              'cacher
          End With
     End With
End Sub

Bonjour @BsAlv Merci pour votre réponse ! Pensez vous qu'il est possible de reset que les données à droite de :BE par exemple ?

re,

à droite de :BE, cela veut dire copier & coller tout ce qui se trouve à droite de la colonne BE ?

Avez-vous un fichier avec une feuille qui ressemble à votre situation ?

Voici un exemple de mon tableau, la macro "ajout quantité et colonne" est celle qui permet d'ajouter des colonnes et le bouton reset à coté est la macro que j'aimerais utiliser pour remettre le tableau à l'état initial.

Merci !

Voici l'avancé : j'ai réussi à paramétrer une macro permettant de réinitialiser la partie à droite de :BE seulement toutes les autres cellules s'effacent donc problématique, si quelqu'un peut jeter un coup d'œil au fichier joint dans le message précédent ça me serait d'une grande aide !

Merci d'avance, bonne journée à vous !

re,

pourquoi devrais-je faire ça après un vote négatif incompréhensible

schermafbeelding 2023 11 23 171904

doublon

Bonjour @BsAlv, je ne sais même pas ce qu'est un vote négatif dans ce forum, j'ai peut être appuyer sur votre commentaire sans le faire exprès, si c'est le cas je m'en excuse, votre solution était une très bonne idée pour le coup !

Edit : je viens de comprendre j'ai voulu appuyer en bas à droite du message pour dérouler le message en pensant qu'il y avait du contenu caché ahah, mes excuses !

Si jamais quelqu'un a une nouvelle idée pour résoudre ma requête je suis preneur, j'ai essayé pas mal de macro mais je n'arrive jamais au résultat voulu, je l'avoue je sèche niveau idée, merci d'avance pour la ou les personnes qui prendront le temps !

Bon week-end !!

bonjour bbclamale,

avec cette macro ?

Sub Supprimer_Cellules_Fusionnées()
     With Sheets("Chiffrage COLONNE")
          lastColumn = .Cells(7, Columns.Count).End(xlToLeft).Column
          For i = lastColumn To 57 Step -1   'à partir de la dernière colonne jusqu'à la colonne 57
               If .Cells(7, i).MergeArea.Columns.Count > 1 Then .Columns(i).Delete: ptr = ptr + 1     'si la cellule(7,i) est fusionnée et contient plusieurs colonnes = supprimer cette colonne
          Next
     End With
     If ptr > 0 Then MsgBox ptr & " colonnes sont supprimées"
End Sub

Bonjour @BsAlv, merci beaucoup pour cette macro elle fonctionne idéalement, j'aurais besoin d'un petit conseil, j'aimerais intégrer dans ma cellule en CC (après macro ajout de colonnes) une formule qui va justement être en lien avec l'ajout de colonnes ( ci-joint le tableau à jour avec un exemple) est-ce qu'il est préférable que j'ajoute ma formule à ma macro VBA d'ajout de colonnes ou il existe une autre méthode plus efficace ? Car l'ajout de colonnes va décaler les formules.

Merci pour le temps accorder, vous m'avez beaucoup aider !!

Bonne journée à vous.

re,

maintenant, si vous demandez 10 colonnes, vous ajoutez 10 copies de la colonne originale et puis vous supprimez cette colonne. Si vous n'ajoutez que 9 colonnes et dans la formules originale, les adresses relatives et absolutes sont bien, cela ne peut pas poser des problèmes. Vous pouvez ajouter quelque formules pour tester ?

re,

Lorsque j'intègre ma formule avec des adresses absolues, les références se transforment en #REF! comme ci joint dans l'exemple du tableau.

e, je le vois, mais pouvez-vous me donner les formules correctes pour une colonne uniquement (donc pas les 3 comme maintenant) et pour la ligne 9 et 10, parce que les formules de 10, elles sont exactement les mêmes que celles de 9 ?

Voici un exemple avec la colonne de calcul rempli :

Rechercher des sujets similaires à "revenir etat initial tableau"