Atteindre une cellule

Résolu
Bonjour,



bonjour a tous
je cherche comment atteindre une cellule avec une certaine valeur.
je m'explique = dans une cellule donnee de la feuille1 je rentre une valeur (par exemple : 01/01/2014) et ca m'envoie directement a la cellule de la feuille2 qui contient cette valeur.
en quelque sorte comme la fonction "recherché".
c'est possible ?

9 réponses

  1. c'est nickel, je te remercie Michel
    j'ai simplement change l'esthetique de la tete du tableau de facon a avoir la date sur une seule colonne et tip top ca marche
    encore merci
    1. Contributeur
      une cellule de la colonne E mais qu'elle est fusionnee avec les cellules de droite

      certainement
      en macro, évite au maximum les cellules fusionnées

      il faut donc que tu enlèves la fusion, que tu sélectionnes les cellules fusionnées (E,F,G) et que tu demandes "centré sur plusieurs colonnes" (au besoin tu peux agrandir la largeur colonne E)
      Pour accéder à ces commandes, tu cliques sur la petite flèche en bas et à droite du ruban accueil-alignement

      Michel
      1. ha superbe, merci Michel, ca marche !
        bon en realite dans ce dossier, il y a 2 feuilles d'archivages.
        j'ai donc adapte ce code aux deux, ca fonctionne tres bien sur la premiere mais pas sur la deuxieme, je tombe sur la MsgBox, a savoir que la donnee recherche est dans une cellule de la colonne E mais qu'elle est fusionnee avec les cellules de droite (colonne Fet G) serait ce la raison du fait que ca ne fonctionne pas ?

        je joint le dossier
        https://www.cjoint.com/?3LEqaXciQHp

        il n'y a aucune donnee confidentielle dedans

        merci
        1. Contributeur
          Bonjour

          testée avec succès sur cette maquette
          https://www.cjoint.com/?3LBigIoJ0cx

          code modifié
          Option Explicit

          Sub atteindre()
          Dim Jour As Date, Adresse As String

          With Sheets(1)
          Jour = .Range("C2")
          End With
          With Sheets(2)
          On Error GoTo Erreur
          Adresse = .Columns("A").Find(Jour).Address
          .Activate
          .Range(Adresse).Select
          End With
          Exit Sub

          Erreur:
          MsgBox Jour & ": donnée inconnue en feuille2 colonne A"
          End Sub

          pour joindre une pièce
          mettre le classeur sans données confidentielles en pièce jointe sur
          https://www.cjoint.com/
          puis copier l'adresse du lien et la coller dans le message de réponse


          Michel
          1. merci Michel mais pour ton code ca me donne ca = erreur 1004 méthode 'range' de l'objet '_global' a échoué

            Mike, a chaque execution je finis sur la boite de dialogue MsgBox

            on peut mettre des pièces jointes ici ? ce serait peut etre plus simple avec une copie du fichier

            a+
            1. merci Michel pour cette reponse
              mais bon, je ne suis pas tres doué en VBA, je construis mes macros soit en prenant a gauche et a droite en les adaptant a mes besoins soit en utilisant la fonction enregistrer de VBA et je dois avouer que je ne comprends pas comment fonctionne la tienne.
              le but de cette macro est le suivant =
              je rempli un tableau avec différentes valeurs tous les mois, je l'archive sur une autre feuille et ensuite j'efface le contenu du tableau feuille1.
              l'interet de cette macro pour laquelle je vous sollicite c'est que au bout d'un certain nombre d'annee la feuille d'archivage sera bien rempli et que je voudrais pouvoir acceder rapidement a n'importe quel tableau d'un mois/annee donne.
              alors cette macro que j'ai trouve va tres bien sauf que je n'ai pas le besoin d'indiquer la plage puisque cette plage est fixe = colonne A.
              voila, j'espere avoir été assez clair
              jose
              1. Contributeur
                Re,

                j'ai répondu à ta demande:
                dans une cellule donnee de la feuille1 je rentre une valeur (par exemple : 01/01/2014) et ca m'envoie directement a la cellule de la feuille2 qui contient cette valeur.
                en quelque sorte comme la fonction "recherché".


                sauf que je n'ai pas le besoin d'indiquer la plage puisque cette plage est fixe = colonne A.
                Comprend pas ce que tu veux dire, je n'ai pas parlé de plage
                peut être remplacer
                Adresse = .Cells.Find(Jour, xlValues).Address
                par
                Adresse = .Columns("A").Find(Jour, xlValues).Address

                au passage:
                la fonction " Find" <---> recherche
                Et aussi:
                en VBa, on évite au maximum d'utiliser les select-selection qui occuoe beaucoup de mémoire RAM et ralentissent considérablement la procédure
            2. Bonjour,

              regarde ce code, la valeur recherchée, (ta date) en cellule D3 de la feuille nommée Feuil1
              Sélectionne la cellule contenant la même valeur dans la colonne F de la feuille nommée Feuil2

              Sub Valeur_Trouvée()
              Dim x As String
              Sheets("Feuil1").Range("D3").Select
              x = ActiveCell.Value
              Sheets("Feuil2").Select
              With Worksheets("Feuil1").Range("F:F")
              Set c = .Find(x, LookIn:=xlValues)
              If Not c Is Nothing Then
              Address = c.Address
              End If
              End With
              Range(Address).Select
              End Sub

              1. Contributeur
                Bonjour

                essaies
                Option Explicit
                Sub atteindre()
                Dim Jour As Date, Adresse As String

                With Sheets(1)
                Jour = .Range("C2")
                End With

                With Sheets(2)
                On Error GoTo Erreur
                Adresse = .Cells.Find(Jour, xlValues).Address
                .Activate
                .Range(Adresse).Select
                End With

                Erreur:
                MsgBox Jour & ": donnée inconnue en feuille2"

                1. j'ai fini par trouvé ca

                  Sub Macro1()
                  Dim Plage As Range
                  Set Plage = Application.InputBox("Sélectionnez une plage !", "Us se débrouille pour vous...", Type:=8)
                  Dim MotRechercher As String
                  MotRechercher = InputBox("Entrer la donnée à repérer", "Us")
                  If MotRechercher = vbNullString Then Exit Sub
                  Dim Cellule As Range
                  For Each Cellule In Plage
                  If InStr(1, Cellule.Value, MotRechercher) > 0 Then
                  Range(Cellule.Address).Select
                  With Selection.Interior
                  .ColorIndex = 6 'jaune
                  .Pattern = xlSolid
                  End With
                  End If
                  Next Cellule
                  End Sub

                  c'est presque ce que je recherchais. Ce qui aurait été top c'est d'avoir la selection de plage en dur dans la macro plutôt que de passer par la fenetre de dialogue

                  merci d'avance