Supprimer une colonne désignée en inputbox

Bonjour le forum,

je n'arrive pas à trouver mon erreur pour que le code fonctionne. Je n'ai pas de message d'erreur mais quand j'exécute la macro, rien ne se passe... J'aimerai donc que la macro supprime une colonne que je désigne grâce à une boite de dialogue. J'aimerai aussi que cette macro puisse s'effectuer sur plusieurs feuilles du même classeur...

Voici mon code pour mieux comprendre:

Sub supp_col()
Dim Suppcol As String

 Suppcol = InputBox("Quel est la colonne vide précédant le dernier mois rentré?")

Sheets("Résumé", "Aéro D", "FAL D", "OP - Approvisionnement", "OP- MOD", "OP - Composants", "Détail appro")

      ' Supprimer l'ancienne colonne vide
      Range(Cells(, Suppcol), Cells(, Suppcol)).Delete Shift:=xlToLeft
      Range(Cells(, Suppcol), Cells(, Suppcol)).Columns.AutoFit
End Sub

Merci par avance

Salut Camille,

Sans ton fichier, difficile de voir ce que tu essaies de faire et pourquoi ça ne fonctionne pas

Etabli une copie de ton fichier original, laisse-y quelques lignes de données rendues anonymes et montre-nous cela.

Cordialement.

Voila:

8classeur1.xlsx (294.76 Ko)

J'ai expliqué un peu plus en détail dans le fichier excel... Merci de prendre du temps en tout cas. Je sais pas si je suis plus claire comme ça mais dis moi si tu as besoin de plus de renseignements.

Ton code fait référence à une feuille ‘Résumé’, mais il n’y a pas de feuille ‘Résumé’ dans ton fichier.

Tu n’as aucune données en place sur ton fichier, on ne voit pas ce qui doit être reporté.

Evite les instructions dans les fichiers, lorsque l’on veut revoir, 3 messages plus loin, ce que tu avais écrit trois messages plus tôt, comment savoir dans quel fichier Excel ça se trouve. Reste sur le Forum pour donner tes instructions, avec des références précises à tes objets Excel tels que colonnes, lignes, feuilles, etc.

Amicalement.

Oui pardon je n'ai pas reporté les nouveaux noms des feuilles dans le fichier que j'ai créé!

Je n'ai pas placé de données car la macro que j'utilise n'a pas besoin de données. Je fais chaque mois la mise à jour de ce fichier et je ne laisse que le dernier mois en détail comme affiché dans le fichier (ici juin). Il est séparé par une colonne vide (ici la colonne AL) pour être mis plus en évidence. C'est une question d'esthétique pour avoir des graphique plus lisibles. C'est donc cette colonne vide que je veux supprimer pour qu'elle soit affichée après, pour le prochain mois: c'est-à dire ici en AS ou AR après la suppression de la colonne.

J'ai réussi à faire la macro MAIS je n'arrive à la faire fonctionner que sur la feuille résumé et pas sur les autres. Je ne sais pas comment faire pour que la macro s'active sur les feuilles citées dans la macro (mais pas sur toutes les feuilles).

Voici mon code:

Sub supp_col()
Dim Suppcol As String
Dim Colonne As Integer
Dim Depart As Range

Set Depart = Application.InputBox("Quel est la dernière colonne rentrée ?", "Cliquer sur la colonne", Type:=8)
 Suppcol = InputBox("Quel est la colonne vide précédant le dernier mois rentré?")

Colonne = Depart.Column

'Feuilles C'est ici que ça bloque
Sheets("Résumé","Aéro D", "FAL D", "OP - Approvisionnement", "OP- MOD", "OP - Composants", "Détail appro").Select

      ' Insertion cellule vide et de sa taille
      Range("E:E").Copy
      Range(Cells(, Colonne + 1), Cells(, Colonne + 1)).Insert Shift:=xlToRight
      Range(Cells(, Colonne + 1), Cells(, Colonne + 1)).ColumnWidth = 0.45

      ' Supprimer l'ancienne colonne vide
      Columns(Suppcol).Delete Shift:=xlToLeft
      Columns(Suppcol).Columns.AutoFit
End Sub

Pour exemple, je répond au premier inputbox la colonne "AR" et au second "AL"

Je ne peux pas rajouter le fichier modifié, il est du coup trop gros avec le nombre de feuilles dont j'ai besoin

6classeur1.xlsx (291.59 Ko)

Le voici mais qu'avec une seule feuille vu que je ne peux pas mettre les autres. Mais elles ont la même structure (et pas les mêmes données à l'intérieur) donc je ne pense pas que ce soit utile.

Encore merci

Salut,

Si j’ai bien compris ton fichier, avec ta ligne Sheets("Résumé", "Aéro D", "FAL D", "OP - Approvisionnement", "OP- MOD", "OP - Composants", "Détail appro").Select tu voudrais effectuer la même action sur plusieurs feuilles.

Il te faut alors passer par une boucle For/Next sur toutes les feuilles du fichier et ne traiter que celles désirées, soit en les nommant, soit en les excluant (je te montre les deux variantes dans mon code).

Ensuite, je n’ai pas pu tester ton code car ça bloque plus loin, mais comme tu prétends que ça fonctionne chez toi, peut-être ai-je loupé quelque chose à ce niveau. Si jamais ça bloque aussi chez toi pour la suite, reviens à la charge. Il me semble quand même que tu compliques un peu les choses, par exemple lorsque tu copies une colonne vide (Range("E:E").Copy).

For i = 1 To Sheets.Count

    'Variante  'Passage en revue de toutes les feuilles sauf la Feuille 4
    If Sheets(i).Name <> "Feuille 4" Then

'''    'Variante  'Ne traiter que les feuilles Résumé et Feuille 1
'''    If Sheets(i).Name = "Résumé" Or Sheets(i).Name = "Feuille 1" Then

        Sheets(i).Activate
          ' Insertion cellule vide et de sa taille
          Range("E:E").Copy
          Range(Cells(, Colonne + 1), Cells(, Colonne + 1)).Insert Shift:=xlToRight
          Range(Cells(, Colonne + 1), Cells(, Colonne + 1)).ColumnWidth = 0.45

          ' Supprimer l'ancienne colonne vide
          Columns(Suppcol).Delete Shift:=xlToLeft
          Columns(Suppcol).Columns.AutoFit
        End If
Next i

A te relire.

11classeur1.zip (128.81 Ko)

Merci beaucoup pour ta réponse Yvouille. Entre temps, vu que je ne savais pas faire, j'ai fais manuellement la répétition sur toutes les feuilles mais c'est exactement ce dont j'avais besoin. C'est vraiment super. Je te remercie énormément !!! C'était la variable i que je ne maitrisais pas, je savais qu'il fallait passer par une boucle for... Next mais je ne savais pas comment placer le "i"...

Je ne sais pas pourquoi ça bloque chez toi, chez moi ça fonctionne parfaitement. Non non je veux la copier, c'est pour garder la mise en forme de cette colonne en fait...

Encore merci d'avoir pris du temps.

Rechercher des sujets similaires à "supprimer colonne designee inputbox"