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   -
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!

1 réponse

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Dernières colonnes renseignées dans une feuille :

    DerniereColonne = Range("A6").End(xlToRight).Column
    1
    1. floston Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    2. Polux31 Messages postés 7219 Statut Membre 1 204
       
      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
    3. floston Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
       
      Super ça marche nickel, merci beaucoup!
      0
    4. floston Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    5. Polux31 Messages postés 7219 Statut Membre 1 204
       
      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