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] - Selection automatique Cellules apres des tris


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Par défaut [VBA-E] - Selection automatique Cellules apres des tris
    Salut à tous !

    j'ai besoin d'aide car toujours novice en VBA malheuseusement...lol
    Je suis en train de créer une p'tite macro, je rencontre plusieurs problèmes:
    ¨
    Pr résumer rapidement mon prog., j'ai un ensemble de portefeuilles clients qui peuvent être regroupés en 39 catégories. Tous les jours, j'importe ces données sous excel dans l'onglet 2 puis je veux comparer ces données à un modèle (tjs le même) mis dans un autre onglet n°1.

    J'ai créé une Liste (userForm) avec les 39 catégories et quand je clique sur un des 39, cela fait un tri automatique selon 2 critères. Jusqu'à là, je n'ai pas de souci.
    ça se complique ici pour moi:

    une fois que mon tri est effectué, j'aimerais que les cellules de la colonne la plus à droite (la première qui suit le tableau relatif à la catégorie de clients) soient sélectionnées automatiquement (le nombre de lignes pour chaque catégorie n'est pas fixe) en se basant sur la catégorie client.
    Ex pr être plus clair:
    je sélectionne le modele 1 et j'ai 50 lignes de la colonne A à AI.
    J'aimerais avoir une sélection auto de la colonne AJ avec les mêmes 50 lignes.

    Une fois que ces 50 cellules sont sélectionnées, j'aimerais que se mette automatiquement une formule dans chaque cellule, que j'ai créé mais que sur excel, pas dans VBA. Je veux que la formule soit insérée dans la premiere cellule puis tiré automatiquement jusqu'à la dernière ligne.

    Ai-je été clair ?
    Est-ce possible ?

    le but étant que chaque cellule puisse apres réaliser ce code (en voilà une partie)
    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
    Set tabl = ???'je ne sais quoi mettre
    a = Range("$AL$1").Value
    titi = True
    titi2 = True
    
    For Each cell In tabl 'tabl devant être les 50 lignes dans l'exemple s'ajustant en fonction de la catégorie clients
        If IsNumeric(cell.Value) = True Then
            If Abs(cell.Value) > a Then
            cell.Interior.ColorIndex = 3
            titi = False
            Else
            cell.Interior.ColorIndex = 0
            End If
        Else
        cell.Interior.ColorIndex = 3
        titi2 = False
        End If
    Next cell
    
    If titi = True And titi2 = False Then
    MsgBox ("Commenter les différences")
    End If
    
    etc
    merci de votre aide, et si besoin que ce soit plus explicite, dites le moi.

    MERCI

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Par défaut
    j'ai oublié de mettre la formule Excel oupssssss

    =SI(ESTERREUR(RECHERCHEV(D1901,'Modèle'!$A$2:$B$26,2,FAUX)=VRAI),"Non trouvé",(RECHERCHEV(D1901,'Modèle'!$A$2:$B$26,2,FAUX)-L1901))

  3. #3
    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
    Par défaut
    Citation Envoyé par Tu
    Set tabl = ???'je ne sais quoi mettre
    a = Range("$AL$1").Value
    titi = True
    titi2 = True

    For Each cell In tabl 'tabl devant être les 50 lignes dans l'exemple s'ajustant en fonction de la catégorie clients
    Set tabl = LaPlage que tu veux examiner. Tu ne donnes pas la colonne. Si c'est AL, à partir de la ligne 2 alors c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Tabl as range
    Set tabl = Range("AL2:AL50")
    Je regarde le reste

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Par défaut
    bah en fait, le prob c que les lignes changent tout le temps donc je peux pas mettre de 2 à 50 !

    chaque jour ça change, et j'aimerais que lorsque je mets à jour chaque matin, bah que lorsque je fais mon tri automatique, si par exemple mon tri me donne 25 lignes pr la categorie A allant de la colonne A à Y, je veux que la colonne Z soit sélectionnée automatiquement de Z1 à 25. et ainsi de suite le lendemain si le nbre de ligne est different

    j'espère que qq'un va trouver lol
    non je blague, bcp d'experts ici, je m'inquiète pas
    pas encore

  5. #5
    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
    Par défaut
    Citation Envoyé par Tu
    J'aimerais avoir une sélection auto de la colonne AJ avec les mêmes 50 lignes.
    et maintenant
    Citation Envoyé par Toujours "tu"
    le prob c que les lignes changent tout le temps donc je peux pas mettre de 2 à 50
    Faudrait savoir !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Tabl as range, NoLigne1 as long, NoLigne2 as long
    NoLigne1 = CEQUETUVEUX
    NoLigne2 = CEQUETUVEUXAUSSI
    Set tabl = Range(Cells(NoLigne1,38),Cells(NoLigne2,38))
    NoLigne1 as long et NoLigne2 as long pour que tu ne sois pas limité aux 32000 et des poussières premières lignes de la feuille de calculs

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Par défaut
    salut OUskel'n'or,

    désolé je me suis mal exprimé je suppose, j'ai recréé une discussion afin d'essayer d'être plus explicite, son intitulé est le suivant:
    VBA-E Help Sélection automatique après tri.Simple mais pas pour moi

    ci dessous cette discussion en copie

    Bonne journée, merci encore


    "
    Re-Salut à tous,

    Je repose ma question dans une nouvelle discussion car je me suis sûrement mal exprimé dans l'autre et Ouskel'n'or n'a pas compris mon problème. Dsl.
    Je vais essayer d'être beaucoup plus clair

    Je travaille sur une feuille Excel pour laquelle j'ai 2 onglets : Modèle & PP.

    PP regroupe plusieurs données pour différentes catégories que je mets à jour chaque matin. PP est un tableau avec plusieurs lignes et colonnes et chaque matin j'insère un nouveau tableau remplaçant le précédent. Le tableau a toujours le même nombre de colonnes mais le nombre de lignes varie.

    J'ai créé une liste (userform) qui permet de faire un tri automatique selon la catégorie. Par exemple, ci-dessous, j'ai sélectionné la catégorie 06, ce qui me donne un tableau dans la feuille excel comme celui dans le fichier word joint. En sélectionnant une catégorie, la première ligne est toujours la même puisque c la header, ce sont les lignes après qui varient. Pour la catégorie 06 ce mardi matin, le tri me donne les lignes 146 / 147 / 148, ce qui sera différent le jour suivant et ainsi de suite.


    Jusqu'à là, tout va bien. Mon problème est le suivant :

    Mon tableau que j'insère chaque matin va toujours de la colonne A à H.

    Je souhaiterais que les cellules de la colonne I soient sélectionnées automatiquement en fonction du tri automatique, c'est à dire comme pour la catégorie 06 mon tri a donné 3 lignes 146, 147 & 148, je voudrais que ces mêmes lignes soient sélectionnées automatiquement pour la colonne I. En l'occurrence les cellules 146, 147 et 148 de la colonne I. Est-ce possible ?

    Et je souhaite aussi que chaque cellule automatiquement sélectionnée pour la colonne I (146, 147 et 148 ) en fonction du tri renvoie la formule suivante :

    Par exemple, pour I ligne 146

    =SI(ESTERREUR(RECHERCHEV(B146,'Modèle'!$A$2:$B$26,2,FAUX)=VRAI),"Non trouvé",(RECHERCHEV(B146,'Modèle'!$A$2:$B$26,2,FAUX)-H146))

    Le B146 et le H146 variant en fonction de la cellule.

    Ai-je été clair ? Si non, merci de me le dire et je recommencerai. J'espère que quelqu'un saura me dire si c'est faisable ou non ? Et si oui, comment faire.

    Ça m'arrangerait bien d'automatiser ces tâches.

    Voilà un bout de mon code qui est faux :s :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    ...
    
    a = Range("$AL$1").Value
    
    ...
    
    Case Is = "06"
    
    Liste1.Hide
    
    Selection.AutoFilter Field:=1, Criteria1:="06"
    
    ligne_debut = Worksheets("PP").Range(" ??? quoi mettre")
    
    ligne_fin = Worksheets("PP").Range(" ??? quoi mettre")
    
    Set tabl = Range(Worksheets("PP").Cells(ligne_debut, 9), Worksheets("PP").Cells(ligne_fin, 9))
    
    For Each cell In tabl
    
    ActiveCell.FormulaR1C1 = _
    
            "=IF(ISERROR(VLOOKUP( ???,'Modèle'!R2C1:R26C2,2,FALSE)=TRUE),""Non trouvé"",(VLOOKUP( ???,'Modèle'!R2C1:R26C2,2,FALSE)- ???))"
    
            If IsNumeric(cell.Value) = True Then
    
            If Abs(cell.Value) > a Then
    
            cell.Interior.ColorIndex = 3
    
            titi = False
    
            Else
    
            cell.Interior.ColorIndex = 0
    
            End If
    
        Else
    
        cell.Interior.ColorIndex = 3
    
        titi2 = False
    
        End If
    
    Next cell
    
    
    If titi = True And titi2 = False Then
    
    MsgBox ("aie aie aie.")
    
    End If
    
    ...

    Merci beaucoup
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [VBA-E] Hauteur automatique des lignes pour cellules fusionnées
    Par Couettecouette dans le forum Contribuez
    Réponses: 0
    Dernier message: 18/10/2007, 15h45
  2. [VBA-E] Comptage de cellules contenant des dates
    Par nono le golfeur dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 23/04/2007, 17h47
  3. [VBA-E]selection de cellule
    Par cufy59 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/04/2007, 16h38
  4. [VBA-E] selection de plusieurs rangés avec des cellules définies
    Par noir_desir dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 24/02/2007, 14h26
  5. Réponses: 4
    Dernier message: 30/05/2006, 17h21

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