Recherche d'une colonne suivant son intitulé dans un onglet

Résolu/Fermé
floston Messages postés 10 Date d'inscription jeudi 12 juin 2014 Statut Membre Dernière intervention 26 juin 2014 - 12 juin 2014 à 14:35
floston Messages postés 10 Date d'inscription jeudi 12 juin 2014 Statut Membre Dernière intervention 26 juin 2014 - 13 juin 2014 à 17:19
Bonjour à tous!
Merci à vous pour toutes ces réponses déjà apportées durant ces dernières années mais là je bloque..!

Alors voilà, quelques infos:

- j'ai dans mon onglet un lieu par ligne : les premières colonnes se remplissent (adresses, tél, identifiant) automatiquement via excel à partir d'un onglet où il y a toutes mes données.
- les colonnes qui suivent représentent chacune une étape (en tête de colonne), commune à toutes les lignes et dans chaque ligne des dates vont être mis de façon automatique en fonction de jalons et d'une date de départ. Il y en a une centaine.

- Fonctionnement: l'utilisateur indique pour chaque étape si elle est réalisée ou non, il met à jour régulièrement le fichier, Etat = 1 ou 0. En fin de tableau, après toutes les étapes, je recense si le lieu est en retard ou non sur la réalisation de ses étapes.

Mon problème:

Le nombre de colonne/étape peut évoluer, ainsi il faut que je cherche les colonnes dans lequel je viens inscrire si mon lieu est en retard ou non, là où je dois inscrire mon pourcentage de réalisation et tout.

J'ai utilisé la fonction Find mais j'ai du mal à définir ma plage de recherche

Ca ça marche:
Set PlageDeRecherche = Sheets("Suivi_Planning_Lieux").Range("A6:GZ" & DerniereLigne)
avec DerniereLigne=ActiveCell.Row

Mais moi je voudrais que ma plage ne soit pas limitéé aux colonnes A6:GZ mais A6:ZZ ou même le mieux serait de mettre tout l'onglet en recherche..!
J'ai essayé ça:
Set PlageDeRecherche = Sheets("Suivi_Planning_Lieux").Range(A6, ZZ)

Ma ça ne marche pas..

Quelqu'un peut m'éclairer ?!

Merci bien!
A voir également:

1 réponse

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
12 juin 2014 à 14:59
Bonjour,

Dernières colonnes renseignées dans une feuille :

DerniereColonne = Range("A6").End(xlToRight).Column
1
floston Messages postés 10 Date d'inscription jeudi 12 juin 2014 Statut Membre Dernière intervention 26 juin 2014
12 juin 2014 à 16:02
Bonjour Polux,

Meric pour ce retour rapide

Ok pour DerniereColonne

Et donc après comment le je le mets dans mon PlageDe Recherche ?

Set PlageDeRecherche = Sheets("Suivi_Planning_Lieux").Range("A6").End(xlToRight).Column

D'avance merci.
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
12 juin 2014 à 16:52
Il y a des exemples ici.

Il faut combiner les 2, par exemple:

DerniereLigne = Range("A6").End(xlDown).Row
DerniereColonne = Range("A6").End(xlToRight).Column

Set maPlage = Range(Cells(DerniereLigne, 1), Cells(6,Dernierecolonne))


PS: A mettre dans les favoris de son navigateur.
0
floston Messages postés 10 Date d'inscription jeudi 12 juin 2014 Statut Membre Dernière intervention 26 juin 2014
12 juin 2014 à 16:55
Super ça marche nickel, merci beaucoup!
0
floston Messages postés 10 Date d'inscription jeudi 12 juin 2014 Statut Membre Dernière intervention 26 juin 2014
12 juin 2014 à 18:40
Polux,

Je galère maintenant sur un petit truc il me semble:
Voilà mon code :



Sub Cherche(Valeur_Cherchee As String)

Dim Trouve As Range
Dim PlageDeRecherche As Range
Dim Valeur_Cherchee As String
Dim AdresseTrouvee As String

DerniereLigne = ActiveCell.Row
Dernierecolonne = Range("A6").End(xlToRight).Column

'dans tout l'onglet Suivi Planning Lieux
Set PlageDeRecherche = Sheets("Suivi_Planning_Lieux").Range(Cells(DerniereLigne, 1), Cells(6, Dernierecolonne))

'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)

'traitement de l'erreur possible : Si on ne trouve rien :
If Trouve Is Nothing Then
'ici, traitement pour le cas où la valeur n'est pas trouvée
AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address
MsgBox AdresseTrouvee
Else
'ici, traitement pour le cas où la valeur est trouvée
AdresseTrouvee = Trouve.Address
End If

'vidage des variables
Set PlageDeRecherche = Nothing
Set Trouve = Nothing
End Sub

Maintenant je veux utiliser cette procédure dans ce même module mais pour d'autres procédures.

Comment je récupère le numéro de la cellule où se trouve le titre que je cherche ? A partir de Cherche() ?
Je mets

Dim Cherche1 as New Cherche()
Cherche1=Cherche("Téléphone")

Ca serait ça ? et donc cherche1 serait du type A7 ?

Merci bien pour ces infos!
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
Modifié par Polux31 le 12/06/2014 à 19:11
Pourquoi faire
Dim Cherche1 as New Cherche()
? C'est une classe ?

Ensuite
Cherche1=Cherche("Téléphone")
ne peut pas fonctioner ... cherche() est une procédure et ne retourne rien. Il faut changer Sub par Function et faire un truc comme ça :

Function cherche(Valeur_Cherchee As String) As Range
'....

'Ajouter en fin de fonction
cherche = Trouve
Set PlageDeRecherche = Nothing
Set Trouve = Nothing
End Function


Pour appeler la fonction :

Dim Cherche1 As range

Set Cherche1 = cherche("Téléphone")
0