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 SubMerci 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:
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 SubPour 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
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 iA te relire.
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.