Sélection d'une colonne en fonction d'un en-tête

Bonjour tout le monde j'espere que vous allez bien !!

J'ai donc développé une application excel. J'ai mon programme en fonction d'un fichier fourni par un intervenant exterieur. Mon programme fonctionne correctement.

Cependant on avais omis de me signaler que le fichier qui m'était fourni pouvait posséder des changements sur les emplacements des colonnes du coup mon programme ne fonctionne pas a moins que je déplace manuellement les colonnes.

Bref j'ai réfléchie, seul les colonnes change d'emplacement les en-tête reste identiques. Il suffit donc d'écrire une macro pour remettre les colonnes dans la bonne mise en forme.

J'utilise donc la fonction recherche "cells.find(what="netmask", ....).Active" puis une fois trouve sélectionner la colonne correspondante.

Seulement sa ne fonctionne pas car la fonction"cells.find(what="netmask", ....).Active" ne sélectionne pas la case elle me laffiche simplement !

Bref je synthétise, je voudrai donc sélectionner une colonne en fonction d'un mot clé présent dans les en-têtes (une ligne quoi)

Si vous pouvez m'aider sa serait cool, merci de votre temps passer a comprendre mon problème.

PS : je ne peux pas ajouter de screenshot pour l'instant car j'utilise mon iPhone actuellement, je l'ajoute des que je peux

Bonjour nabsix,

Ce n'est pas plutôt cells.find(what="netmask", ....).Activate ou cells.find(what="netmask", ....).Select ?

Bonjour

Bonjour Vba-new

Une idée comme ça

Mais avec un vrai fichier et pas un screenshot

Sub test()
Dim Cel As Range
Dim Colonne_Voulue As Integer

  Set Cel = Cells.Find(what:="netmask", LookIn:=xlValue, lookat:=xlWhole)
  If Not Cel Is Nothing Then
    Colonne_Voulue = Cel.Column
  Else
    MsgBox "Pas trouvé le nom "
    Exit Sub
  End If

End Sub

Deja merci à vous deux d'avoir passé un peu de temps sur mon sujet.

J'ai essayé vos deux solutions voici mon retour.

Donc pour la solution de Vba-new changer le Activate en Select fonctionne correctement, cependant sa sélectionne que la case, c'est normal vous me direz, mais je ne vois pas la solution pour sélectionner toute la colonne correspondante vu que pour utiliser la fonction Range il faut préciser le numéro de la colonne. Je pense qu'il faut que j'utilise une variable mais je ne maitrise pas très bien.

Pour la solution de Banzai64 ben en fait j'ai un code d'erreur qui est le suivant :

"Erreur d’exécution :'9'

L'indice n'appartient pas a la solution"

Quant je clique sur débobage il me surligne ceci :

Set Cel = Cells.Find(What:="netmask", LookIn:=xlValue, LookAt:=xlWhole)

Je ne sais pas pourquoi j'ai pourtant bien sélectionné tout le fichier.

Bref voici en pièce jointe le fichier source. Sur la feuille 1, il s'agit du nouveau export fourni sur la feuille 2 la mise en place sur laquelle j'ai travaillé pour mon programme. Comme vous pouvez le constaté les colonnes ne sont pas placées aux mêmes emplacements ce qui fausse mon programme.

Merci encore de votre aide.

281fichiersource.zip (38.60 Ko)

Bonjour

nabsix a écrit :

"Erreur d’exécution :'9'

cela vient que j'ai zoublié un s à xlValues

Clic sur chaque bouton de chaque page

Attention : Le mot recherché doit être identique au mot dans une colonne

"network*" est différent de "network"

Salut le forum

Sélection de la colonne contenant netmask*

Sub Col_Select()
Dim Cel As Range

  Set Cel = Cells.Find(what:="netmask*")
  If Not Cel Is Nothing Then
    Cells(1, Cel.Column).Resize(Cells(Rows.Count, Cel.Column).End(xlUp).Row).Select
  Else
    MsgBox "Pas trouvé le nom "
    Exit Sub
  End If

End Sub

Mytå

Bonjour,

Ton explication est pas trop fameuse... Je me demande encore quelle est la feuille à mettre à jour...

J'ai supposé que c'est la feuille 1 qui est à ordonner comme la feuille 2

Il vaut mieux éviter les Select dans les macros...

Activer la feuille 1 avant d'exécuter la macro suivante :

Sub MiseEnPlaceColonne()
Dim Cel As Range, tablo
tablo = Split("EA-Country netmask* address*")
On Error GoTo GESTERR
For i = 1 To 3
  Set Cel = Cells.Find(tablo(i - 1))
  If Not Cel Is Nothing Then
    Columns(Cel.Column).Cut
    Columns(1).Insert Shift:=xlToRight
  End If
Next
Exit Sub
GESTERR:
MsgBox tablo(i - 1) & " n'existe pas"
End Sub

A+

donc tout d'abord merci a tous, grace a vous j'ai trouvé la solution !!

Je vais faire un rapide retour des solutions que vous m'avez proposé, cela pourra être utile pour un autre utilisateur :

Donc la solution de Banzai64 la fonction recherché bien la colonne cependant il manqué sa sélection. Et voila que Mytå répond a mes souci.

Pour la réponse de galopin01, malgré le fait que cela fonctionne, j'ai pas trop compris le code je vais donc utilisé la solution fourni par Mytå en ajoutant juste le copier-coller dans la nouvelle feuille.

Merci encore de votre aide ^^

Bonne journée

Bonjour,

je souhaite sélection plusieurs colonnes au lieu d'une comment faire?

Sub Col_Select()

Dim Cel As Range

Set Cel = Cells.Find(what:="netmask*")

If Not Cel Is Nothing Then

Cells(1, Cel.Column).Resize(Cells(Rows.Count, Cel.Column).End(xlUp).Row).Select

Selection.Copy

Sheets("Feuil3").Select

Range("AA").Select

ActiveSheet.Paste

Else

MsgBox "Pas trouvé le nom "

Exit Sub

End If

End Sub


Avec le fichier en PJ

Merci de vitre aide

Rechercher des sujets similaires à "selection colonne fonction tete"