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. #21
    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
    Tu as essayé mon dernier bout de code?

  2. #22
    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
    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
    Ce code fonctionne ! Je n'avais pas vu le message, désolé ^^

    Je vais essayer de l'adapter à mon code pour mes vrais fichiers (un code qui boucle sur 16 fichiers ^^)

    Tu pourrais m'expliquer clairement ce que signifie ces deux lignes?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     If cell >= Ref1 And cell.Offset(0, 1) >= Ref2 Then
    Range("H3").Value = Range("H3").Value + cell.Offset(0, -1).Value & Chr(10)

  3. #23
    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
    Oui bien sûr. Alors mon code fonctionne finalement pour toi !

    J'enregistre dans la cellule le texte contenu dans la colonne d'avant d'où le offset(0,-1) qui veut dire de prendre la cellule de la colonne = colonne de la cellule actuelle - 1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If cell >= Ref1 And cell.Offset(0, 1) >= Ref2 Then ' Si la cellule de la colonne B est supérieure à la Réf1 contenu dans B2 ET si la cellule adjacente à la cellule de la colonne B sur laquelle on est entrain de faire le test est supérieure à la Réf2 contenu dans C2 alors on enregistre le libbelé contenu dans la colonne A dans la cellule H3
    Range("H3").Value = Range("H3").Value + cell.Offset(0, -1).Value & Chr(10)

  4. #24
    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
    Ok c'est ça que veut dire offset

    Dans mon vrai fichier, le texte à prendre est en colonne C, et les références sont en colonne H et K c'est pour ça que j'ai du mal, ET le résultat soit se placer ailleurs dans une autre feuille (je suis sur le même travail que sur l'autre topic "NB.SI VBA" Kiouane)

    De plus, il se peut qu'il y ait, comme toute à l'heure des cases vides dans H et K .. ^^ Je ne pense pas que le xlUp va fonctionner

  5. #25
    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 peux montrer un Template qui reprend exactement la même composition de ton fichier, je pourrai te guider.

  6. #26
    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 peux montrer un Template qui reprend exactement la même composition de ton fichier, je pourrai te guider.
    Nom : Capture.PNG
Affichages : 158
Taille : 89,2 Ko

    Les nom sont en colonne C : je sais pas si ça influe sur quoi que ce soit mais ils peuvent avoir plusieurs mots jusqu'à 50 caractères en tout

    Les valeurs de références sont : H3 et K3

    Si les valeurs de H > H3 ET K > K3 alors prendre le nom de la ligne en colonne C et placer dans une autre feuille dans une même cellule

    Je sais pas si ce que je dis est compréhensible ^^

  7. #27
    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
    J'avais pas vu en effet XD

    Il faut adapter avec tes propres colonnes c'est pour ça
    Le U, V, W, Y sont le nom des colonnes à toi de mettre les tiennes

  8. #28
    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
    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("H3").Value
    Ref2 = Range("K3").Value
     
    Dim cell As Range
     
    n = Range("C" & Rows.Count).End(xlUp)
     
    For Each cell In Range("H4:H" & n)
     
     If cell >= Ref1 And cell.Offset(0, 3) >= Ref2 Then
     
        With Worksheets("Nomdetafeuille")
        .Range("H3").Value = .Range("H3").Value + cell.Offset(0, -5).Value & Chr(10)
     
     End If
     
    Next
     
    End Sub

  9. #29
    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
    J'avais pas vu en effet XD

    Il faut adapter avec tes propres colonnes c'est pour ça
    Le U, V, W, Y sont le nom des colonnes à toi de mettre les tiennes
    Même en adaptant avec mes colonnes je n'arrive pas à le faire fonctionner ^^
    ça ne provoque pas d'erreur mais ça ne fais rien, je te montre quand même le code : j'ai juste modifier le nom des colonnes

    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("A2:U" & Sheets(1).Range("A:A").End(xlDown).Row).Count
    r1 = Sheets(1).Range("B1").Value: r2 = Sheets(1).Range("C1").Value
     
    For i = 2 To x + 1
    If Sheets(1).Range("B" & i).Value > r1 And Sheets(1).Range("C" & i).Value > r2 Then
    Sheets(1).Range("H2").Value = IIf(Sheets(1).Range("H2").Value <> "", Sheets(1).Range("H2").Value & Chr(10) & Sheets(1).Range("A" & i).Value, Sheets(1).Range("A" & i).Value)
    End If: Next
     
    End Sub

  10. #30
    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
    Citation Envoyé par mateoa44 Voir le message
    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

    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
    Option Explicit
     
    Sub test()
        'J'utilise 4 variables :
        '   rg pour Range de type Range
        '   t() est un tableau
        '   i et res sont respectivement de type Long et String (& pour Long et $ pour String)
        Dim rg As Range, t(), i&, res$
            'Je mets la plage [A3:C6] dans la variable rg
            Set rg = ActiveSheet.Range("A3:C6")
            'Je mets ma plage rg dans mon tableau
            '   t(i,j) := croisement de la ligne i avec la colonne j dans mon tableau t
            '   t(1,1) = la valeur de la cellule A3
            '   t(2,2) = la valeur de la cellule B4 ...
            t = rg
            'J'initialise res à "*"
            res = "*"
            'Boucle sur le nombre de ligne de la plage rg (Ubound(t) donne le nombre de ligne de t)
            For i = 1 To UBound(t)
                'Je teste la condition que tu nous expliquais
                If t(i, 2) >= ActiveSheet.[B2] And t(i, 3) >= ActiveSheet.[C2] Then
                    'Si la condition est vrai, j'ajoute la valeur voulue précédée d'un "/"
                    res = res & "/" & t(i, 1)
                End If
            Next i
            'En fin de boucle j'ai donc res qui vaut "*/[toutes les valeurs séparées d'un /]"
            'Donc je remplace "*/" par rien
            res = Replace(res, "*/", "")
            'Ensuite je remplace le séparateur / par un retour a la ligne c'est à dire Chr(10)
            res = Replace(res, "/", Chr(10))
            'Je mets le résultat dans la cellule [H3]
            ActiveSheet.[H3] = res
    fin:
        'Je libère la variable rg
        Set rg = Nothing
    End Sub

    En version courte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
        Dim rg As Range, t(), i&, res$: res = "*"
            Set rg = ActiveSheet.Range("A3:C6"): t = rg
            For i = 1 To UBound(t)
                If t(i, 2) >= ActiveSheet.[B2] And t(i, 3) >= ActiveSheet.[C2] Then res = res & "/" & t(i, 1)
            Next i
            ActiveSheet.[H3] = Replace(Replace(res, "*/", ""), "/", Chr(10))
    fin: Set rg = Nothing
    End Sub

    La meilleur façon de comprendre un code (a mon gout) c'est de l'exécuter en Pas à pas détaillé (Touche F8) en observant attentivement la fenêtre des variables locales.
    Tu comprendras très facilement ce que fait mon code.

  11. #31
    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
    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("H3").Value
    Ref2 = Range("K3").Value
     
    Dim cell As Range
     
    n = Range("C" & Rows.Count).End(xlUp)
     
    For Each cell In Range("H4:H" & n)
     
     If cell >= Ref1 And cell.Offset(0, 3) >= Ref2 Then
     
        With Worksheets("Nomdetafeuille")
        .Range("H3").Value = .Range("H3").Value + cell.Offset(0, -5).Value & Chr(10)
     
     End If
     
    Next
     
    End Sub
    Merci pour ton aide, ça me met une erreur : Bloc End If sans IF, je me sui dis que ça devait être du fait qu'il manque un End With, donc j'ai rajouté un End With à la ligne avant le End If.

    Une erreur apparait : "La méthode 'Range' de l'objet worksheet a échoué"

    J'ai enlevé Worksheets et j'ai mis juste Sheets ça met une erreur "Erreur défini par l'applcation ou par l'objet"

  12. #32
    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
    Change pour voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = Sheets(1).Range("A2:U" & Sheets(1).Range("A:A").End(xlDown).Row).Count
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = Sheets(1).Range("A2:U" & Sheets(1).Range("B:B").End(xlDown).Row).Count
    De plus il s'agit bien de la première feuille de ton classeur ? Ensuite r1 et r2 sont tes références donc mets les bonne case pour leur attribuer la bonne valeur

  13. #33
    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
    T'as bien mis le bon nom de feuille ? Sinon tu peux me dire sur quelle ligne tu as cette erreur?
    N'hésite pas à mettre un pouce vert pour les solutions qui t'ont aidées.

  14. #34
    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
    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
    Option Explicit
     
    Sub test()
        'J'utilise 4 variables :
        '   rg pour Range de type Range
        '   t() est un tableau
        '   i et res sont respectivement de type Long et String (& pour Long et $ pour String)
        Dim rg As Range, t(), i&, res$
            'Je mets la plage [A3:C6] dans la variable rg
            Set rg = ActiveSheet.Range("A3:C6")
            'Je mets ma plage rg dans mon tableau
            '   t(i,j) := croisement de la ligne i avec la colonne j dans mon tableau t
            '   t(1,1) = la valeur de la cellule A3
            '   t(2,2) = la valeur de la cellule B4 ...
            t = rg
            'J'initialise res à "*"
            res = "*"
            'Boucle sur le nombre de ligne de la plage rg (Ubound(t) donne le nombre de ligne de t)
            For i = 1 To UBound(t)
                'Je teste la condition que tu nous expliquais
                If t(i, 2) >= ActiveSheet.[B2] And t(i, 3) >= ActiveSheet.[C2] Then
                    'Si la condition est vrai, j'ajoute la valeur voulue précédée d'un "/"
                    res = res & "/" & t(i, 1)
                End If
            Next i
            'En fin de boucle j'ai donc res qui vaut "*/[toutes les valeurs séparées d'un /]"
            'Donc je remplace "*/" par rien
            res = Replace(res, "*/", "")
            'Ensuite je remplace le séparateur / par un retour a la ligne c'est à dire Chr(10)
            res = Replace(res, "/", Chr(10))
            'Je mets le résultat dans la cellule [H3]
            ActiveSheet.[H3] = res
    fin:
        'Je libère la variable rg
        Set rg = Nothing
    End Sub

    En version courte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
        Dim rg As Range, t(), i&, res$: res = "*"
            Set rg = ActiveSheet.Range("A3:C6"): t = rg
            For i = 1 To UBound(t)
                If t(i, 2) >= ActiveSheet.[B2] And t(i, 3) >= ActiveSheet.[C2] Then res = res & "/" & t(i, 1)
            Next i
            ActiveSheet.[H3] = Replace(Replace(res, "*/", ""), "/", Chr(10))
    fin: Set rg = Nothing
    End Sub
    Merci beaucoup Antony pour ces explications !! C'est très clair !
    J'aimerais savoir s'il était obligatoire de passer par un tableau ? Je ne vois pas trop comment l'appliquer à mon cas (j'ai mis une capture écran tout à l'heure dans un message précédent). En effet, dans l'exemple, les colonnes sont collées, et il n'y a pas de cellules vides..
    Ma difficulté est aussi de trouver la bonne plage, car dans l'exemple c'était A3:C6, mais comme j'ai 16 fichiers, chaque plage n'est pas la même (en colonne si, mais pas en ligne)

  15. #35
    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
    T'as bien mis le bon nom de feuille ? Sinon tu peux me dire sur quelle ligne tu as cette erreur?
    N'hésite pas à mettre un pouce vert pour les solutions qui t'ont aidées.
    En faisant comme vient de m'apprendre Antony en pas à pas avec F8, ça plante sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each cell In Range("H4:H" & n)
    Pour le nom de la feuille j'ai mis "Feuil3"

  16. #36
    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
    Du coup pour mon code au lieu des sheets(1) il faut mettre sheets("Feuil3")

  17. #37
    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
    Change pour voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = Sheets(1).Range("A2:U" & Sheets(1).Range("A:A").End(xlDown).Row).Count
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = Sheets(1).Range("A2:U" & Sheets(1).Range("B:B").End(xlDown).Row).Count
    De plus il s'agit bien de la première feuille de ton classeur ? Ensuite r1 et r2 sont tes références donc mets les bonne case pour leur attribuer la bonne valeur
    Ca n'affiche que B ^^
    PS : j'ai bien modifié les feuilles et les valeurs ! Al, ton code je l'ai testé sur le jeu d'exemple dans un autre classeur excel !

  18. #38
    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
    Bizarre chez moi ça fonctionne très bien

  19. #39
    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
    Il manquait le .Row pour n

    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("H3").Value
    Ref2 = Range("K3").Value
     
    Dim cell As Range
     
    n = Range("C" & Rows.Count).End(xlUp).Row   'Ici
     
    For Each cell In Range("H4:H" & n)
     
     If cell >= Ref1 And cell.Offset(0, 3) >= Ref2 Then
     
        With Worksheets("Nomdetafeuille")
        .Range("H3").Value = .Range("H3").Value + cell.Offset(0, -5).Value & Chr(10)
     End with
     End If
     
    Next
     
    End Sub

  20. #40
    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
    Créer chez toi le même jeu de données que j'ai mis au tout début (le jeu d'exemple) et essaye ce code (qui est le tiens) adapté, dis moi si ça marche ^^'
    J'ai créé l'exemple en feuille 2

    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(2).Range("A3:A" & Sheets(2).Range("B:B").End(xlDown).Row).Count
    r1 = Sheets(2).Range("B2").Value: r2 = Sheets(2).Range("C2").Value
     
    For i = 2 To x + 1
    If Sheets(2).Range("B" & i).Value > r1 And Sheets(2).Range("C" & i).Value > r2 Then
    Sheets(2).Range("H2").Value = IIf(Sheets(2).Range("H2").Value <> "", Sheets(2).Range("H2").Value & Chr(10) & Sheets(2).Range("A" & i).Value, Sheets(2).Range("A" & i).Value)
    End If: Next
     
    End Sub
    Kiouane, je crois avoir trouvé le petit truc !

    En fait, il m'a suffit de modifier cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    n = Range("C" & Rows.Count).End(xlUp)
    En ajoutant le petit mot magique ^^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    n = Range("C" & Rows.Count).End(xlUp).Row

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 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