IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E] selectionner une ligne sur excel en fonction de ce que contient une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Points : 41
    Points
    41
    Par défaut [VBA-E] selectionner une ligne sur excel en fonction de ce que contient une cellule
    bonjour,
    Après avoir résolu mon problème d'hier j'en ai un autre et comme vous m avez super bien aidée rje revien vers vous.
    alors, j'ai réussi à envoyer mes données de ma userform vers excel mais elles se recopient toujour les unes sur les autres: gros problème pour moi. plusieurs solutions s'offrent à moi:
    - soit je garde mes lignes de code et je fais qqch d'autre pour que ca s'ecrive à la suite mais c'est galère parce que j'ai des contraintes: il faut que mes données ailles s'ecrire sur la ligne correspondant au mois et à l'année que je selectionne dans une autre userform(en premier)donc je préfèrerais garder mes codes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    with worksheets("BDD1")
    .cells(maligne,1).formula = REC1.text
    ...
    mais le problème c'est que pour maligne je veux : userform4.RECAnnée.value et userform4.RECMois.value mais ca marche pas

    sinon autre idée:
    si l'année est x
    et si le mois est y
    alors ecrire les données sur la ligne qui comporte les données x et y
    fin si

    qu'est ce je dois faire?
    Si il y a possibilité de m'aider merci beaucoup
    Jamelie

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Regarde Find dans l'aide, ensuite tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LaLigne = Activecell.row
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Adresse = activecell.address
    Pour find, tu peux faire ta recherche en enregistrant ta macro.
    Après, tu mets le code, on pourra te montrer comment simplifier

    A+

    Je viens de relire ta question : Comme tu dois vérifier la correspondance des données pour deux cellules, une fois que tu as trouvé la correspondance pour la 1ère, tu testes la cellule
    Ok = DonnéeDaCôté = Cells(Activecell.row,ColonneDaCôté).value
    if ok then 'tu es sur la bonne ligne
    si pas ok, utilise finfnext dans une boucle (F1 sur findnext)

    Il y a une solution plus sioux mais essaie déjà ça en attendant...
    (je dois m'absenter)

    Bon courage

    A+ tard

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Grillé ;p

    La solution est la... Je la post qd meme...
    DateRow est une variable globale, elle passe par un formulaire annexe avant d'entrer les données...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Function UpdateRowOK() As Boolean
    UpdateRowOK = False
    Dim i As Integer
    If RECAnnée.ListIndex = -1 Then
      MsgBox "Veuillez selectionner une année."
      Exit Function
    End If
    'Procédure qui trouve la ligne concernée par Date
    i = 1
    Do While Not ((BDD1.Cells(i, 1).Text = RECAnnée.List(RECAnnée.ListIndex)) And _
                         (BDD1.Cells(i, 2) = RECMois.Value))
       i = i + 1
    Loop
     
    DateRow = i
    UpdateRowOK = True
    End Function
    N'oubliez pas de mettre le

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 18/01/2016, 16h21
  2. Inserer une ligne vide avant en fonction de la valeur d'une cellule
    Par laurent27530 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/11/2014, 17h06
  3. Incrémentation d'une ligne sur excel
    Par bones24 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/02/2013, 08h30
  4. Réponses: 1
    Dernier message: 02/10/2009, 15h15
  5. extraction automatique d'une ligne sur excel
    Par LAFORCADE dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/06/2007, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo