SUPPRIMER TOUTES LES COLONNES DE H à T ne comprenant pas la valeur choisie

Merlin258413

XLDnaute Occasionnel
Bonjour à tous j'ai besoin de votre car je sèche un peu dans ma macro
Dans le fichier joint j'ai un onglet "Base". De cet onglet je dois en faire un état qui consiste à avoir l'état des FAE à une date donnée (la valeur C2).


Par conséquent je supprime toutes les autres dates des colonnes H à U du fichier FAE.et là je bloque

Ma seconde étape sera de sélection uniquement les cellules contenant FAE dans le mois choisi et de supprimer cette colonne pour garder que les montants

je vous donne cette info au cas ou vous en avez besoin


Je bloque lors de la suppression mon code doit être erroné (JE suis ouvert à toutes propositions améliorations)
Merci pour votre aide
Bon WE




Sub supp()
Dim NB_COL As Integer
Dim MOIS_CHOISI As String

' remise à blanc des ancienne FAE
Sheets("FAE").Select
Range("A1").CurrentRegion.Clear
ActiveWorkbook.Names.Add "PLAGE", Range("A4").CurrentRegion
' Copie des nouvelles FAE
Sheets("Base").Select
MOIS_CHOISI = Range("c2").Value
Sheets("FAE").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False



' CELA BLOQUE A PARTIR DE LA


NB_COL = Range("A1", Selection.End(xlToRight)).Count




For COMPTEUR = 8 To NB_COL
If Range("H1").Value <> MOIS_CHOISI Then
Range("h1", NB_COL).EntireColumn.Delete
End If
Next COMPTEUR

End Sub
 

Pièces jointes

  • Classeur1.xlsm
    119.1 KB · Affichages: 44
  • Classeur1.xlsm
    119.1 KB · Affichages: 40
  • Classeur1.xlsm
    119.1 KB · Affichages: 57

vgendron

XLDnaute Barbatruc
Re : SUPPRIMER TOUTES LES COLONNES DE H à T ne comprenant pas la valeur choisie

bonjour

quand tu supprimes des colonnes il faut commencer par la fin.
for compteur = Nb_Col to 8 step -1

sinon, il y a des pb d'indices
quand excel supprime une colonne compteur = 10 (col J) par exmeple, toutes les autres K L M .... sont décalées vers la gauche
du coup, au prochain tour, le compteur est a 11.. sauf que mainteant la colonne 11, c'est ce qu'il y avait dans la colonne L..
tu n'as donc pas testé ce qui se trouvait en colonne K....
 

Merlin258413

XLDnaute Occasionnel
Re : SUPPRIMER TOUTES LES COLONNES DE H à T ne comprenant pas la valeur choisie

Bonjour et merci
Etant Novice pourriez vous si cela vous est possible corriger ma macro sur le fichier Excel ?
Car je ne sais pas par par ou l'aborder

Merci beaucoup pour votre aide précieuse
 
Dernière édition:

vgendron

XLDnaute Barbatruc
Re : SUPPRIMER TOUTES LES COLONNES DE H à T ne comprenant pas la valeur choisie

Bonjour Merlin,

pour modifier le code:

Alt + F11 pour ouvrir l'éditeur VBA de macro
à gauche; dans l'explorateur du projet, tu cliques sur "Modules" puis Module1

à droite, ton code apparait.. et c'est la que tu colles ce code

Code:
Sub supp()
Dim NB_COL As Integer
Dim MOIS_CHOISI As String


' remise à blanc des ancienne FAE

    Sheets("FAE").Select
    Range("A1").CurrentRegion.Clear
    ActiveWorkbook.Names.Add "PLAGE", Range("A4").CurrentRegion
    'ici je ne comprend pas l'intérêt de nommer une plage avec current qu'on vient juste d'effacer
    'forcément, la "PLAGE" ne sera que la cellule A4
    
' Copie des nouvelles FAE

    Sheets("Base").Select
    MOIS_CHOISI = Range("c2").Value
    Sheets("FAE").Select
    Range("A1").Select
    
    'avant de faire un coller special. il faudrait faire un copier..
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False



' CELA BLOQUE A PARTIR DE LA:
' en fait. ca bloque à la ligne précédente.. on demande à la macro de coller quelque chose qu'elle n'a pas en mémoire..
'il manque le copier


'ici. je pense qu'il manque la référence à la feuille BASE.. je l'ai donc ajoutée

    NB_COL = Sheets("BASE").Range("A1", Selection.End(xlToRight)).Count


For COMPTEUR = NB_COL To 8 Step -1
    If Range("H1").Value <> MOIS_CHOISI Then
     Range("h1", NB_COL).EntireColumn.Delete
     End If
Next COMPTEUR

End Sub

Regarde mes commentaires en vert. en fait je pense que tu as plusieurs soucis sur ta macro..
l'ennui, c'est que pour t'aider, on a besoin de savoir et comprendre ce que tu souhaites faire
 

Merlin258413

XLDnaute Occasionnel
Re : SUPPRIMER TOUTES LES COLONNES DE H à T ne comprenant pas la valeur choisie

Bonjour et Merci beaucoup pour ta réponse voila ce que je désire faire

A partir de l'ONGLET BASE et selon la date sélectionnée en C2



JE veux obtenir dans l'onglet FAE
1- un état qui reprend le fichier de base (les colonnes Mois, BU Chantier, Prestation et Montant)
2- Nous avons 2 critères le mois choisi en C2(onglet base) et aussi toutes les lignes correspondant "FAE" du mois choisi.
Ceci sans faire apparaitre la colonne F que je met uniquement dans mon fichier à titre d'explication
Cet Onglet FAE devra être rafraichi chaque fois que je relance la macro

Enfin j'aimerais automatisé sous total par chantier et un total général


Merci beaucoup pour votre aide


Voici le fichier
 

Pièces jointes

  • Classeur 2 resultat.xlsm
    97.8 KB · Affichages: 37

Merlin258413

XLDnaute Occasionnel
Re : SUPPRIMER TOUTES LES COLONNES DE H à T ne comprenant pas la valeur choisie

J'ai fait quelque chose qui fonctionne grâce à ton aide peut être cette macro peut être améliorée ? si oui peux tu me dire ou ?
De plus j'ai une question
Pourquoi nous sommes obligé de partir en arrière c'est à dire de la dernière colonne et enfin à quoi sert l'instruction step et surtout le -1
Pourquoi il n'est pas possible de partir de la colonne H vers la dernière colonne ?

Merci pour ces réponses qui me permettront d'avancer dans mon apprentissage de vba.


For COMPTEUR = NB_COL To 8 Step -1 'il faut partir en arrière



Sub supp()
Dim NB_COL As Integer
Dim MOIS_CHOISI As String

' remise à blanc des ancienne FAE
Sheets("FAE").Select
Range("A1").CurrentRegion.Clear
' Copie des nouvelles FAE

Sheets("Base").Select
MOIS_CHOISI = Range("c2").Value
ActiveWorkbook.Names.Add "PLAGE", Range("A4").CurrentRegion.Copy
Sheets("FAE").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False



' Supprimer toutes les colonnes <> date choisi

NB_COL = Range("A1", Selection.End(xlToRight)).Count
For COMPTEUR = NB_COL To 8 Step -1 'il faut partir en arrière
If Cells(1, COMPTEUR) <> MOIS_CHOISI Then
Columns(COMPTEUR).Delete
End If

Next COMPTEUR

Columns("E:F").EntireColumn.Delete




' Supprimer toutes les lignes <> "FAE"

NB_LIG = Range("A1", Selection.End(xlDown)).Count

For LIGNE = NB_LIG To 2 Step -1
If Cells(LIGNE, 6).Value <> "FAE" Then

Rows(LIGNE).EntireRow.Delete

End If
Next LIGNE


Columns("f:F").EntireColumn.Delete
End Sub
 

vgendron

XLDnaute Barbatruc
Re : SUPPRIMER TOUTES LES COLONNES DE H à T ne comprenant pas la valeur choisie

la réponse à ta question "pourquoi il faut partir en arrière" est dans mon post #2....
pour le reste. je ne peux pas regarder ca ce soir. donc demain ;-)

Bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
312 304
Messages
2 087 069
Membres
103 453
dernier inscrit
Choupi