Recherche d'une colonne suivant son intitulé dans un onglet
Résolu
floston
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
floston Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
floston Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
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!
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!
1 réponse
-
Bonjour,
Dernières colonnes renseignées dans une feuille :
DerniereColonne = Range("A6").End(xlToRight).Column-
-
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. -
-
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! -
Pourquoi faire
Dim Cherche1 as New Cherche()
? C'est une classe ?
EnsuiteCherche1=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")
-