Extraire donnees colonnes en fonction nom colonne

Jarod51

XLDnaute Nouveau
Bonjour a tous,
J'ai un fichier Excel qui contient plusieurs colonnes et je voudrais extraire les données de certaines colonnes dans une autre feuille. Mon problème, c'est que les colonnes que je veux extraire ne sont pas forcement tout le temps au même emplacement et le nom devant les deux points varie. Ce qui est toujours pareil c'est ce que j'ai après les deux points. Je voulais savoir si il est possible d'extraire ces colonnes en fonction de leur nom et non pas en fonction de l'emplacement.
Par exemple:
Extrait toutes les valeurs dont le nom de la colonne est :100, :50, :25, etc...
J'avais commence a écrire une macro mais elle ne fonctionne que pour un emplacement unique de colonne :(
Public Sub extractCol()
Set range1 = Range("A : D, BI:BI, BQ:BQ,CL:CL,CM:CN,CT:CT,DB : DB")
range1.Copy
Set newbook = Workbooks.Add
ActiveCell.PasteSpecial Paste:=xlPasteValues
End Sub
 

Pièces jointes

  • test.xlsx
    5.8 KB · Affichages: 92

Jacky67

XLDnaute Barbatruc
Merci bien pour la macro, ca marche. Par contre, pourrais tu m'expliquer un peu le code
Re...
Je vais essayer
VB:
Sub testJJ()
    Dim i As Long, x As Double
    Application.ScreenUpdating = False
    On Error Resume Next
    Application.DisplayAlerts = False
    Sheets("Resultat").Delete ' on supprime la feuille si elle existe
    Application.DisplayAlerts = True
    On Error GoTo 0
    Sheets("Feuille1").Copy After:=Sheets(1) ' on fait une copie conforme de la feuille à traiter
    ActiveSheet.Name = "Resultat" ' et on la nomme résultat
    For i = Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1 ' on commence la boucle par la dernière cellule de la ligne 1
        If Not IsNumeric(Mid(Cells(1, i), InStr(Cells(1, i), ":") + 1, Len(Cells(1, i)))) Then ' on cherche les cellules de la ligne 1 non numerique
            Columns(Cells(1, i).Column).Delete ' et on supprime les colonnes correspondantes
        Else
            x = Mid(Cells(1, i), InStr(Cells(1, i), ":") + 1, Len(Cells(1, i))) * 1 ' on place dans X la valeur numerique de la cellule apprès le ": "(deux points+espace)
            If Not Int(x) = x Or x = 0 Then ' on ne prend en compte que les X avec decimale ou égale à zéros
                Columns(Cells(1, i).Column).Delete ' et on supprime les colonnes correspondantes
            End If
        End If
    Next
    'Ici il ne doit rester que les colonnes ou le nombre (en ligne 1) après les deux point
    'est un nombre entier supérieur à zéros
    ActiveSheet.Shapes("Button 1").Cut ' facutatif, supprime le bouton que j'ai placé en feuil1
    Application.ScreenUpdating = True
End Sub

Bon courage
 
Dernière édition:

Statistiques des forums

Discussions
315 098
Messages
2 116 189
Membres
112 679
dernier inscrit
Yupanki