Atteindre une cellule

Résolu
joseB45 Messages postés 22 Statut Membre -  
joseB45 Messages postés 22 Statut Membre -
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. joseB45 Messages postés 22 Statut Membre
     
    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
    0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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"

    0
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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

    0
  4. joseB45 Messages postés 22 Statut Membre
     
    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
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. joseB45 Messages postés 22 Statut Membre
     
    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+
    0
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    0
  8. joseB45 Messages postés 22 Statut Membre
     
    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
    0
  9. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    0
  10. joseB45 Messages postés 22 Statut Membre
     
    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
    0