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 :

Selection depuis une cellule active


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Par défaut Selection depuis une cellule active
    Salut
    je voudrais savoir qui peut m'aider sur comment faire une selection depuis une cellule active?

    C'est à dire que m'a cellule active est en H4, je voudrais faire une selection de A4:H4, mais elle aurait pu très bien etre en H2 ou H1...

    Merci

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sub test()
    x = ActiveCell.Row
    Range("A" & x & ":H" & x).Select
    End Sub

  3. #3
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    Bonjour
    une variante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(ActiveCell.Address & ":H4").Select
    Abed_H

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 079
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 079
    Par défaut
    SAlut
    @Moilou2: Evite le multiposting, si tout le monde fait ca on va etre submergé par des 100 enes de post par jour, d'autant plus qu'en charchant un peu tu avais la reponse dans le forum, y compris dans l'autre post ou je t'ai repondu.

    @Abed_H: ton code va pas puisque tu gardes 4 (& ":H4")

    J'utilise aussi souvent cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range(cells(x,"A"),Cells(x,"H"))
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    Bonsoir Qwazerty
    @Abed_H: ton code va pas puisque tu gardes 4 (& ":H4")
    selon la demande de Moilou2 (C'est à dire que m'a cellule active est en H4)
    j'ai suggéré cette syntaxe.
    Bonne soirée
    Abed_H

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 079
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 079
    Par défaut
    Re
    La cellule active determine la ligne sur laquel il "travail"
    cellule active en H4 -> Selection de A4 à H4
    cellule active en H2 -> selection de A2 à H2 (pas H4 sinon tu selectionne les lignes de 2à4)
    Je pense que tel et sa demande :p
    [Edit]Mais il est vrai que j'ai un peu plus d'info a cause de son autre post [/Edit]
    A++
    bonne soirée
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  7. #7
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    Re
    Donc Moilou2 a deux solutions c'est à lui de faire son choix.
    Bonne soirée Qwazerty
    Abed_H

  8. #8
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Par défaut
    Re les gars!

    Bon j'ai un peu avancé avec les solutions de tout le monde
    Voila ce que j'obtient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub colonne()
    Dim cel As Range
    
    For Each cel In Worksheets("PMP").Range(Worksheets("PMP").Range("H2"), Worksheets("PMP").Cells(Rows.Count, "H").End(xlUp))
    If cel.Value = Date Then
       
        cel.Value = DateAdd("h", ActiveCell.Offset(0, -2), Date)    Worksheets("PMP").Range("A" & cel.Row & ":H" & cel.Row).Copy Sheets("Feuil1").Cells(Rows.Count, "H").End(xlUp).Offset(1, -7)
    End If
    
    Next
    
    End Sub
    Mais au niveau de cette ligne j'ai un problème mais je crois qu'elle n'est pas placée où il faut ou ce n'est pas la bonne syntaxe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cel.Value = DateAdd("h", ActiveCell.Offset(0, -2), Date)
    J'effectue cette ligne de code pour que lorsque une cellule de la colonne "H" est égale à la date système, elle soit réincrémenté de la valeur se trouvent en case dans la colonne "F" et ensuite j'envoi la ligne dans un autre classeur!

    Merci de regarder et dire se que vous en pensez!

    Merci

  9. #9
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Par défaut
    En fait sa incrémente de la même valeur pour toutes les dates sa prend la valeur de réincrémentation de la premiere fois qu'il rencontre une cellule égale à la date système te sa le met aux autres dates aussi!

  10. #10
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    Bonsoir
    une légère modification et ça marche..!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub colonne()
    Dim cel As Range
    Set rngH = Sheets("PMP").Range("H2:" & Sheets("PMP") _
              .Cells(Rows.Count, "H").End(xlUp).Address)
     For Each cel In rngH
      If cel.Value = Date Then
           Sheets("Feuil1").Cells(Rows.Count, "A").End(xlUp).Resize(1, 8) = _
           Sheets("PMP").Range("A" & cel.Row & ":H" & cel.Row).Value
      End If
    Next
    End Sub
    Abed_H

  11. #11
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Par défaut
    Ça ne marche pas!

    je te passe mon fichier si tu veux regarder!
    Moi je vais au lit je reviens demain!
    Merci à toi

    ps : J'ai pas réussi à envoyer le fichier! Tant pis on en reparle demain
    Merci quand même

  12. #12
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,
    Faudrait savoir ce que tu veux exactement parce que entre le post n°1 et le n°8, ya un monde de différence...

    @+

  13. #13
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Par défaut
    Re à tous!
    Bon désolé Fring si tu n'arrive pas à me suivre mais c'est parce que j'y vais par étape!

    Je récapitule si tu veux
    Bon ce que je veux c'est avoir un classeur qui sert de base dans lequel j'ai des instructions. Dans ce classeur j'ai une colonne "h" dans laquel il y a des dates. Je veux faire un test dans cette colonne.

    Si la date est égale à la date système, alors je la réincrémente de la périodicité qui est en colonne "F" ensuite je copie la ligne de"A" à "H" et je la colle dans une autre feuille.

    Pour le moment j'ai réussi à faire la comparaison par rapport à la date système dans la colonne "H", et à copier la ligne de "A" à "H" si elle est égale à la date système, puis à la coller dans une autre feuille.

    Maintenant je ne veux pas que si je rappelle la macro qui fait la comparaison la ligne dont la date dans la colonne "H" été égale à le date système se copie et se colle une nouvelle fois, c'est pourquoi avant de la copier coller je veux d'abord réincrémenter de la valeur en "F"!

    J'espere que j'ai été clair?!!!

    Donc actuellement mon code est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub colonne()
    Dim cel As Range
     
    For Each cel In Worksheets("PMP").Range(Worksheets("PMP").Range("H2"), Worksheets("PMP").Cells(Rows.Count, "H").End(xlUp))
    If cel.Value = Date Then
     
        cel.Value = DateAdd("h", ActiveCell.Offset(0, -2), Date)
        Worksheets("PMP").Range("A" & cel.Row & ":h" & cel.Row).Copy Sheets("Feuil1").Cells(Rows.Count, "H").End(xlUp).Offset(1, -7)
    End If
     
    Next
     
    End Sub
    Mais le problème, c'est que actuellement ça ne marche pas comme je veux c'est à dire que ça me copie/colle bien mes lignes dont la date est égale à la date système, mais ça réincrément les dates toutes de la même durée alors que ce n'est pas ce que je veux puisque la périodicité n'est pas la même pour chaque ligne.

    Je pense que sa serait plus simple de donner mon fichier mais je n'y arrive pas

    Merci de m'aider si vous avez compris

  14. #14
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Par défaut
    Je viens de retester
    ça incrémente bien mais ça met la même date pour toutes cases que j'ai copier/coller

  15. #15
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Par défaut
    Bon j'ai tout réduit!

    Il reste que quelque lignes mais ça change rien au fonctionnement

    Le code est dans le visual basic éditor de la PMP

  16. #16
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 079
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 079
    Par défaut
    SAlut
    Alors déjà la patience est une vertu , les gens viennent ici sur leur temps libre, mais ils ont une vie, même si comme moins d'autres on une vie social proche du néant, on a quand même d'autre choses a faire, alors un peu de patience que diable

    Pour ton problème, 2 causes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each cel In Worksheets("PMP").Range(Worksheets("PMP").Range("H2"), Worksheets("PMP").Cells(Rows.Count, "H").End(xlUp))
    Ici c'est pas H2 mais H5

    Et ce pourquoi tu as toujours la même valeur erroné, tout simplement par ce que tu a mis un "ActiveCell" au lieu d'un "Cel"

    Une autre chose mais qui n'est je pense pas vital, c'est d'utiliser Value2 au lieu de Value pour comparait une date et une valeur de cellule contenant une date, en effet value2 ne tient pas compte du formatage de la cellule.

    Après modifs de ton code ça donne çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For Each cel In Worksheets("PMP").Range(Worksheets("PMP").Range("H5"), Worksheets("PMP").Cells(Rows.Count, "H").End(xlUp))
    If cel.Value2 = Date Then
        '1erment on copi cette ligne dans la feuil1
        Worksheets("PMP").Range("A" & cel.Row & ":h" & cel.Row).Copy Sheets("Feuil1").Cells(Rows.Count, "H").End(xlUp).Offset(1, -7)
     
        'ensuite on donne a la case H de PMP ca nouvelle date d'intervention
        cel.Value = DateAdd("h", cel.Offset(0, -2).Value, Date)
    End If
     
    Next
    Je me suis permis d'inverser les 2 lignes contenues dans la boucle comme ça tu gardes l'info de la date de la dernière intervention sur la machin, mais tu es seul juge de ce qui convient de faire.

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  17. #17
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Par défaut
    merci beaucoup
    Désolé de pas etre patient j'éviterai de recommencer

    je testerai plus tard je te dis si ça marche. Merci
    @+

  18. #18
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    Bonjour Moilou2
    je t'envoie ton fichier modifié voir Feuil1 clic sur le bouton et tu observes
    Amicalement Abed_H

  19. #19
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Par défaut
    Super ta soluce qwazerty! Merci aussi à toi Abel_H!

    Bon j'ai maintenant fini ma première étape de raisonnement à savoir toute la partie Test,Coi/Colle et incrémentation.

    J'ai donc ma macro quoi me permet de faire le travail.

    Je donne la macro complete pour ceux que sa intéresse:

    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
    Sub colonne()
     
    Dim cel As Range
     For Each cel In Worksheets("PMP").Range(Worksheets("PMP").Range("H5"), Worksheets("PMP").Cells(Rows.Count, "H").End(xlUp))
    If cel.Value2 = Date Then
        '1erment on copi cette ligne dans la feuil1
        Worksheets("PMP").Range("A" & cel.Row & ":h" & cel.Row).Copy Sheets("Feuil1").Cells(Rows.Count, "H").End(xlUp).Offset(1, -7)
     
        'ensuite on donne a la case H de PMP ca nouvelle date d'intervention
        cel.Value = DateAdd("h", cel.Offset(0, -2).Value, Date)
     
    End If
     
    Next
     
    End Sub
    Maintenant que j'ai effectuer ce raisonnement il va falloir que je passe à ma deuxième phase pour ceux qui me suive depuis le début, je souhaite en faite maintenant que le classeur PMP qui est en fait ma base reste fermé et que le copier coller qui se faisait jusqu'a maintenant en feuille 1 du classeur PMP aille se faire maintenant dans un autre classeur.

    Je vais donc travailler avec une structure OLE DB Microsoft Jet! Je pense que c'est la facon la plus simple.

    Je vais essayer de faire quelque chose et si quelqu'un à une solution plus simple ou si vous n'êtes pas d'accord!

    Merci à vous

  20. #20
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Par défaut
    Donc pour situer un peu se que je vais expliquer je vais situer le contexte.

    J'ai donc 2 classeurs : -PMP -->C'est celui avec les instructions et les dates
    -Alertes-->C'est celui ou je doit venir coller les lignes

    PMP-->Nom de la feuille PMP
    Alertes-->Nom de la feuille Alerte

    Je veux donc que le classeur PMP reste fermé et que quand j'ouvre le classeur Alertes, la macro que l'on a définit auparavant:

    Aille faire sont test dans le classeur PMP qui est fermé et que les lignes ou la date est égale à la date système vienne se coller dans la Feuille "Alertes", du classeur "Alertes".

    Dans un premier temps il faut déja que je modifie la macro précédente

    Pour qu'elle n'aille plus coller dans la "feuille1" du classeur "PMP", mais dans la feuille "Alertes" du classeur "Alertes".

    J'ai donc penser à reformuler la macro de la façon suivante:

    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
    Sub colonne()
    
    Dim cel As Range
     For Each cel In Workbook("PMP").Worksheets("PMP").Range(Worksheets("PMP").Range("H5"), Worksheets("PMP").Cells(Rows.Count, "H").End(xlUp))
    If cel.Value2 = Date Then
        '1erment on copi cette ligne dans la feuil1
        Workbook("PMP").Worksheets("PMP").Range("A" & cel.Row & ":h" & cel.Row).Copy Workbook("Alertes").Sheets("Alertes").Cells(Rows.Count, "H").End(xlUp).Offset(1, -7)
        
        'ensuite on donne a la case H de PMP ca nouvelle date d'intervention
        cel.Value = DateAdd("h", cel.Offset(0, -2).Value, Date)
    
    End If
     
    Next
     
    End Sub
    Les modif que j'ai effectuées sont en rouge!

    Dites moi déja si cette partie est OK?!

    Ensuite j'ai adopté la structure OLE DB Microsoft Jet et pour le momment j'obtient le résultat suivant, mais je ne sais pas comment exprimer ma requête je ne vais pas coller la macro ci-dessus à l'endroit ou j'ai marqué requête si?

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Sub Alerte()
        Dim Cn As ADODB.Connection
        Dim Fichier As String
        Dim NomFeuille As String, texte_SQL As String
        Dim Rst As ADODB.Recordset
        
        'Définit le classeur fermé servant de base de données
        Fichier = "C:\Documents and Settings\mamman qu'on aime\Bureau\PMP.xls"
        'Nom de la feuille dans le classeur fermé
        NomFeuille = "PMP"
        
        Set Cn = New ADODB.Connection
        
        '--- Connection ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & Fichier & _
                ";Extended Properties=Excel 8.0;"
            .Open
        End With
        '-----------------
        
       'requête.
        
        texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
        
        Set Rst = New ADODB.Recordset
        Set Rst = Cn.Execute(texte_SQL)    
        'Ecrit le résultat de la requête dans la cellule A2
        Range(Worksheets("Alertes").Range("A2")).CopyFromRecordset Rst
        
        '--- Fermeture connexion ---
        Cn.Close
        Set Cn = Nothing
    
    End Sub
    La partie en rouge est une partie que j'ai pris dans un exemple mais je ne sais pas trop quoi effacer donc j'ai préferé vous la laisser!

    J'attend vos conseils merci beaucoup d'avance

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] Sélection depuis la cellule active jusqu'à une cellue variable
    Par formabox dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/09/2012, 12h11
  2. Pb pour selectioner la ligne depuis une cellule
    Par idiana dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/08/2007, 06h04
  3. Comparaison d'une selection avec une cellule
    Par Swiper dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/07/2007, 11h29
  4. [VBA-E]suppression lignes a partir d'une cellule active
    Par lio62 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/02/2007, 15h01
  5. selection d'une cellule sur une certaine ligne
    Par florent149 dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 20/07/2006, 17h37

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