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 :

Du texte dans une case [VBA]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 80
    Par défaut Du texte dans une case [VBA]
    Bonjour à tous, et re-bonjour peut-être pour certains !!

    Je vous explique tout d'abord ce que je veux faire :

    J'aimerais pouvoir sélectionner des éléments textuels dans une colonne si telle valeur est supérieur à une valeur de référence et les placer dans une même cellule.

    Voici un exemple bidon avec Excel pour vous montrer grosso modo ce que j'aimerais pouvoir faire !

    Nom : Capture.PNG
Affichages : 283
Taille : 8,2 Ko

    Je prends B car 7 > 5 et 12 > 10
    Je ne prends pas A car 4 < 10

    Le résultat B et D sont affiché dans ne seule et même cellule avec un retour à la ligne entre les deux =p

    Je sais pas si j'ai réussis à exprimer mon besoin, si vous avez des questions, n'hésitez surtout pas !

    Je ne vois pas du tout comment commencer, si vous avez des idées, je vous en serai très reconnaissant ^^

  2. #2
    Membre chevronné Avatar de Kiouane
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 198
    Par défaut
    C'est un problème qui peut se résoudre avec des conditions if. Tente d'abord un code puis reviens ici.

    Je te donne un début d'idée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For each Cell in "Taplage"
     
         if   Cell = 5 and Cell.offset(0,1)=10 then 'Tu devras mieux écrire la syntaxe et tout
     
         end if

  3. #3
    Membre expérimenté
    Homme Profil pro
    développeur
    Inscrit en
    Février 2013
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : développeur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 123
    Par défaut
    Bonjour,

    Je pense à une double boucle
    Une boucle pour parcourir les lignes (De A à D dans l'exemple)
    A l'intérieur une seconde boucle pour parcourir les colonnes (bla et blo dans l'exemple)
    Dans la seconde boucle, on compare la donnée à tester et la colonne où l'on se situe dans la seconde boucle.
    On prend une variable booléenne qu'on passe à true de base, si une valeur ne correspond pas, on la passe à false.
    A la fin de la seconde boucle, on regarde si la variable est à true, si c'est le cas, on stocke la valeur à la première colonne dans la case cible.

    Ca ira?

  4. #4
    Membre chevronné
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Par défaut
    Je pense qu'une seule boucle for parcourant tes lignes suffit
    avec une condition if qui vérifie tes deux références
    et une iif pour vérifier si il y a pas déjà une valeur dans la cellule cible

  5. #5
    Membre chevronné Avatar de Kiouane
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 198
    Par défaut
    Sinon pour le retour à la ligne tu peux utiliser la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Tacellule".WrapText = True
    Penses à utiliser l'enregistreur de macro si tu ne connais pas le code VBA de certaines fonctionnalités.

  6. #6
    Membre chevronné
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Par défaut
    Un simple chr(10) est suffisant pour moi

  7. #7
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    à adapter :

    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 test()
        Dim rg As Range, t(), i&, res$
            Set rg = ActiveSheet.Range("A3:C6")
            t = rg
            res = "*"
            For i = 1 To UBound(t)
                If t(i, 2) >= ActiveSheet.[B2] And t(i, 3) >= ActiveSheet.[C2] Then
                    res = res & "/" & t(i, 1)
                End If
            Next i
            res = Replace(res, "*/", "")
            res = Replace(res, "/", Chr(10))
            ActiveSheet.[H3] = res
    fin:
        Set rg = Nothing
    End Sub

  8. #8
    Membre chevronné
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Par défaut
    Moi je voyais ça plutôt comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub try1()
     
    x = Sheets(1).Range("U2:U" & Sheets(1).Range("U:U").End(xlDown).Row).Count
    r1 = Sheets(1).Range("V1").Value: r2 = Sheets(1).Range("W1").Value
     
    For i = 2 To x + 1
    If Sheets(1).Range("V" & i).Value > r1 And Sheets(1).Range("W" & i).Value > r2 Then
    Sheets(1).Range("Y2").Value = IIf(Sheets(1).Range("Y2").Value <> "", Sheets(1).Range("Y2").Value & Chr(10) & Sheets(1).Range("U" & i).Value, Sheets(1).Range("U" & i).Value)
    End If: Next
     
    End Sub

  9. #9
    Membre chevronné Avatar de Kiouane
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 198
    Par défaut
    Pour moi voilà ma proposition. Je l'ai bien sûr testée et normalement elle fait l'affaire.

    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
     
    Sub test()
     
    Dim n, Ref1, Ref2 As Integer
     
    Ref1 = Range("B2").Value 
    Ref2 = Range("C3").Value
     
    Dim cell As Range
     
    n = Range("B" & Rows.Count).End(xlUp)
     
    For Each cell In Range("B5:B" & n)
     
     If cell >= Ref1 And cell.Offset(0, 1) >= Ref2 Then
     
        Range("H3").Value = Range("H3").Value + cell.Offset(0, -1).Value & Chr(10)
     
     End If
     
    Next
     
    End Sub

  10. #10
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 80
    Par défaut
    Merci à tous pour vos réponses et votre participation !

    Je vais aller tenter tout ça et je vous tiens au courant !

  11. #11
    Membre expérimenté
    Homme Profil pro
    développeur
    Inscrit en
    Février 2013
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : développeur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 123
    Par défaut
    Citation Envoyé par Al__22 Voir le message
    Je pense qu'une seule boucle for parcourant tes lignes suffit
    avec une condition if qui vérifie tes deux références
    et une iif pour vérifier si il y a pas déjà une valeur dans la cellule cible
    Le problème c'est qu'on ignore le nombre de références
    Ou alors j'ai du louper un épisode !

  12. #12
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 80
    Par défaut
    Kiouane, j'ai essayé ta solution sur le même exemple que j'ai donné, ça n'affiche que D, ça devrait aussi afficher B ^^

    Je regarde le code plus en détail pour bien tout comprendre avant d'essayer de l'appliquer à mon vrai fichier !

    Je vais regarder ton code Antony même si je ne comprends vraiment pas tout !!!!!!

  13. #13
    Membre expérimenté
    Homme Profil pro
    développeur
    Inscrit en
    Février 2013
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : développeur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 123
    Par défaut
    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
    Sub test()
     
    Dim n, Ref1, Ref2 As Integer
     
    Ref1 = Range("B2").Value 
    Ref2 = Range("C3").Value
     
    Dim cell As Range
     
    n = Range("B" & Rows.Count).End(xlUp)
     
    For Each cell In Range("B3:B" & n)
     
     If cell >= Ref1 And cell.Offset(0, 1) >= Ref2 Then
     
        Range("H3").Value = Range("H3").Value + cell.Offset(0, -1).Value & Chr(10)
     
     End If
     
    Next
     
    End Sub
    Voili voilou !

  14. #14
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 80
    Par défaut
    Citation Envoyé par antonysansh Voir le message
    à adapter :

    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 test()
        Dim rg As Range, t(), i&, res$
            Set rg = ActiveSheet.Range("A3:C6")
            t = rg
            res = "*"
            For i = 1 To UBound(t)
                If t(i, 2) >= ActiveSheet.[B2] And t(i, 3) >= ActiveSheet.[C2] Then
                    res = res & "/" & t(i, 1)
                End If
            Next i
            res = Replace(res, "*/", "")
            res = Replace(res, "/", Chr(10))
            ActiveSheet.[H3] = res
    fin:
        Set rg = Nothing
    End Sub
    Ceci fonctionne Antony, je te remercie !
    Pourrais-tu si tu as le temps m'expliquer un peu ce qu'il fait ? En fait, à partir de la 3ème ligne du code je ne comprends plus du tout !! J'imagine ce qu'il fait certes, mais j'aimerais comprendre les syntaxes utilisées afin de pouvoir adapter ce code à mes 16 fichiers haha ^^

    A vrai dire, même dans la déclaration de variables je ne comprends pas les synthaxes : "()" , "&" , "$", je devine que "$" = string

  15. #15
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 80
    Par défaut
    Citation Envoyé par MacKay77 Voir le message
    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
    Sub test()
     
    Dim n, Ref1, Ref2 As Integer
     
    Ref1 = Range("B2").Value 
    Ref2 = Range("C3").Value
     
    Dim cell As Range
     
    n = Range("B" & Rows.Count).End(xlUp)
     
    For Each cell In Range("B3:B" & n)
     
     If cell >= Ref1 And cell.Offset(0, 1) >= Ref2 Then
     
        Range("H3").Value = Range("H3").Value + cell.Offset(0, -1).Value & Chr(10)
     
     End If
     
    Next
     
    End Sub
    Voili voilou !
    Merci pour ta participation !
    Ceci met A B et D
    A ne devrait pas être placé puisque 4< 10 ^^

  16. #16
    Membre expérimenté
    Homme Profil pro
    développeur
    Inscrit en
    Février 2013
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : développeur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 123
    Par défaut
    Me disais bien que j'aurais du lire tout le code

    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
    Sub test()
     
    Dim n, Ref1, Ref2 As Integer
     
    Ref1 = Range("B2").Value 
    Ref2 = Range("C2").Value
     
    Dim cell As Range
     
    n = Range("B" & Rows.Count).End(xlUp)
     
    For Each cell In Range("B3:B" & n)
     
     If cell >= Ref1 And cell.Offset(0, 1) >= Ref2 Then
     
        Range("H3").Value = Range("H3").Value + cell.Offset(0, -1).Value & Chr(10)
     
     End If
     
    Next
     
    End Sub

  17. #17
    Membre chevronné
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Par défaut
    Citation Envoyé par mateoa44 Voir le message
    Kiouane, j'ai essayé ta solution sur le même exemple que j'ai donné, ça n'affiche que D, ça devrait aussi afficher B ^^

    Je regarde le code plus en détail pour bien tout comprendre avant d'essayer de l'appliquer à mon vrai fichier !

    Je vais regarder ton code Antony même si je ne comprends vraiment pas tout !!!!!!
    Et le mien ?

    Le problème c'est qu'on ignore le nombre de références
    Ou alors j'ai du louper un épisode !
    Si regarde bien mon code les deux ref y sont

  18. #18
    Membre chevronné Avatar de Kiouane
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 198
    Par défaut
    Si tu l'aurais remarqué j'avais mis C3 à la place de C2 sinon le code fonctionne de mon côté.

    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
    Sub test()
     
    Dim n, Ref1, Ref2 As Integer
     
    Ref1 = Range("B2").Value
    Ref2 = Range("C2").Value
     
    Dim cell As Range
     
    n = Range("B" & Rows.Count).End(xlUp)
     
    For Each cell In Range("B5:B" & n)
     
     If cell >= Ref1 And cell.Offset(0, 1) >= Ref2 Then
     
        Range("H3").Value = Range("H3").Value + cell.Offset(0, -1).Value & Chr(10)
     
     End If
     
    Next
     
    End Sub

  19. #19
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 80
    Par défaut
    Citation Envoyé par Al__22 Voir le message
    Et le mien ?



    Si regarde bien mon code les deux ref y sont
    Je vais essayer le tien Al, par contre tu m'embrouilles avec les U, Y, V lol ^^

    @Kiouane : j'avais pas fais gaf non !!!

  20. #20
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 80
    Par défaut
    Citation Envoyé par Kiouane Voir le message
    Si tu l'aurais remarqué j'avais mis C3 à la place de C2 sinon le code fonctionne de mon côté.

    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
    Sub test()
     
    Dim n, Ref1, Ref2 As Integer
     
    Ref1 = Range("B2").Value
    Ref2 = Range("C2").Value
     
    Dim cell As Range
     
    n = Range("B" & Rows.Count).End(xlUp)
     
    For Each cell In Range("B5:B" & n)
     
     If cell >= Ref1 And cell.Offset(0, 1) >= Ref2 Then
     
        Range("H3").Value = Range("H3").Value + cell.Offset(0, -1).Value & Chr(10)
     
     End If
     
    Next
     
    End Sub
    Ne fonctionne pas sur ma machine, ça ne met que D

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

Discussions similaires

  1. Insérer du texte dans une cellule vba
    Par jucva dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/09/2015, 14h30
  2. Insérer du texte dans une cellule vba
    Par jucva dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/09/2015, 14h01
  3. Affichage du texte dans une case colorée tableau
    Par kochfet dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 4
    Dernier message: 26/03/2014, 11h33
  4. affichage d'un texte dans une case au survol de cette case
    Par grinder59 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 21/06/2007, 07h37
  5. Affichage différent selon texte dans une case
    Par pingoo78 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/11/2005, 16h32

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