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. #41
    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
    Mateo.... Je t'ai déjà montré l'erreur. Dans deux messages précédents.

  2. #42
    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
    Merde !!! Autant pour moi, j'étais encore dessus moi^^ !!! Bon je go tester tout ça sur le VRAI fichier maintenant et je vous tiens au courant !

    Dès que ça fonctionne, j'ajoute les petits pouces verts et je clôture !!

    Je vous tiens au courant !!

  3. #43
    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
    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
    Mouhaha j'ai trouvé :
    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 + 2
    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
    Il faut que tu adapte la ligne For i = 2 To x + 2 en fonction de où tu commence le x = Sheets(2).Range("A3:A" & Sheets(2).Range("B:B").End(xlDown).Row).Count ici c'est + 2

  4. #44
    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
    Bon bah génial si ça marche !! Je sais pas encore quelle solution je vais prendre !!
    J'ai pas compris le x+2 ^^'

  5. #45
    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
    Le + 2 correspond au nombre de ligne avant que commence les valeurs dont tu as besoins

  6. #46
    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
    A quoi correspond le i = 2 alors? ^^ j'suis chiant ouai !

    J'ai réussis à mettre le code de Kiouane sur mon vrai fichier :p

  7. #47
    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
    C'est la ligne de départ de tes valeurs

  8. #48
    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
    C'est bien ce que je pensais oui, ok bah j'te remercie pour ton temps, pour ton aide et pour les explications !

    De même pour tous les autres, merci beaucoup pour toutes ces aides que vous m'avez apporté ! Je vous en suis très reconnaissant

  9. #49
    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
    Pas de soucis à ton service
    Bonne soirée

  10. #50
    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 : 34
    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
    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)
    J'utilise toujours un tableau quand je traite des valeurs de cellules.
    La raison est simple, une cellule contient beaucoup de méthodes et de propriétés (implicitement si tu ne précises pas de propriété c'est .Value qui va être utilisée). Un objet Range est donc beaucoup plus "gros" qu'un élément d'un simple tableau. Le temps de traitement va donc être beaucoup plus rapide.


    Pour ce qui est d'adapter la plage a chacun de tes cas, je pense que tu as déjà trouvé une solution grâce aux autres intervenant de cette discutions.
    Finalement dans mon code, il n'y a que cette ligne à changer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rg = ActiveSheet.Range("A3:C6")
    Tu dois déterminer les bornes de ta plage.

  11. #51
    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 ça marche, j'te remercie pour ta réponse.

    Peut-on écrire quelque chose comme ça pour ton code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dim n as long 'pour la dernière ligne renseignée
    n = Sheets("Telephonie").Range("C" & Rows.Count).End(xlUp).Row
    Set rg = Sheets("Telephonie").Range("C4:C" & n, ) and Sheets("Telephonie").Range("H4:H" & n, ) and Sheets("Telephonie").Range("K4:K" & n, ) : t = rg
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     Dim n, ref1, ref2 As Integer
                Dim cell As Range
                ref1 = Sheets("Telephonie").Range("H3").Value
                ref2 = Sheets("Telephonie").Range("K3").Value
                n = Sheets("Telephonie").Range("C" & Rows.Count).End(xlUp).Row
                For Each cell In Sheets("Telephonie").Range("H4:H" & n)
                If cell > ref1 And cell.Offset(0, 3) > ref2 Then
                .Range("D8").Value = .Range("D8").Value + cell.Offset(0, -5).Value & Chr(10)
                End If
                If cell < 0.6 And cell.Offset(0, 3) < 0.35 Then
                .Range("C8").Value = .Range("C8").Value + cell.Offset(0, -5).Value & Chr(10)
                End If
                Next
    Après vérification, je constate que pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                For Each cell In Sheets("Telephonie").Range("H4:H" & n)
                If cell > ref1 And cell.Offset(0, 3) > ref2 Then
                .Range("D8").Value = .Range("D8").Value + cell.Offset(0, -5).Value & Chr(10)
                End If
    En fin de compte ça ne prend pas en compte la ref 2, il me met dans la cellule tous ceux > ref1 mais ne prend pas en compte le >ref1 ET >ref2

    Par contre pour ma deuxième condition ça fonctionne bien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       If cell < 0.6 And cell.Offset(0, 3) < 0.35 Then
                .Range("C8").Value = .Range("C8").Value + cell.Offset(0, -5).Value & Chr(10)
                End If

  12. #52
    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 : 34
    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
    Peut-on écrire quelque chose comme ça pour ton code ?
    Absolument pas !

    Le AND comme le OR, le IS, le LIKE ... sont des opérateurs logiques qui vont renvoyer un booléen qui prendra la valeur VRAI ou FAUX.

    VRAI AND VRAI va te répondre VRAI mais plage1 AND plage2 n'a pas de sens pour Excel. Je ne pense pas qu'il y est d'erreur de logique ou de syntaxe (pas testé)
    mais il n'y a aucune de chance d'obtenir le résultat souhaité.

    Je crois comprendre que tu veux prendre la réunion des différentes plages.
    C'est possible en VB a l'aide de la méthode Union de l'objet Application : Exemple :
    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_Union()
        Dim rg1 As Range, rg2 As Range, rg3 As Range, Rg_Union As Range
            Set rg1 = Range("C4:C10")
            Set rg2 = Range("K4:K10")
            Set rg3 = Range("H4:H10")
            Set Rg_Union = Application.Union(rg1, rg2, rg3)
        MsgBox "rg1 := " & rg1.Address & vbCr & _
               "rg2 := " & rg2.Address & vbCr & _
               "rg3 := " & rg3.Address & vbCr & _
               "Réunion de rg1, rg2 et rg3 := " & Rg_Union.Address
    fin:
        Set rg1 = Nothing
        Set rg2 = Nothing
        Set rg3 = Nothing
        Set Rg_Union = Nothing
    End Sub

  13. #53
    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 je vois, merci !!

    Sur le code des autres participants, j'ai résolu le problème en supprimant les deux variables ref1 et ref2 et en mettant directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If cell > Sheets("Telephonie").Range("H3").Value And cell.Offset(0, 3) > Sheets("Telephonie").Range("K3").Value Then
    'action

  14. #54
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour !

    Citation Envoyé par mateoa44 Voir le message
    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
    Cas d'école d'un filtre avancé utilisant un critère calculé via une formule de niveau débutant !

    Donc réalisable sans code … Et si vraiment besoin d'un code :
    soit via la fin du tutoriel soit via l'aide de l'Enregistreur de macros ou encore rien qu'en lisant l'aide VBA interne !
    C'est souvent le plus simple pour un débutant et peut aussi s'avérer plus rapide qu'un code bouclant sur des cellules …

    _________________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …

  15. #55
    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
    Re bonjour à tous !

    Je rencontre un problème que je n'arrive pas à surmonter !

    Je suis toujours sur le même travail depuis maintenant quelques semaines.

    Maintenant, je dois mettre, pareil qu'avant, des noms dans une cellule, cependant, je dois les mettre selon un calcul : pour i = 5 to dernière ligne -> Si Hi/Ki<3 alors mettre le nom dans la cellule.

    Je suis donc partis du code fourni par Kiouane :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                Dim n As Integer
                Dim cell As Range
                n = Sheets("Telephonie").Range("C" & Rows.Count).End(xlUp).Row
                For Each cell In Sheets("Telephonie").Range("H4:H" & n)
                If cell > Sheets("Telephonie").Range("H3").Value And cell.Offset(0, 3) > Sheets("Telephonie").Range("K3").Value Then
                .Range("D8").Value = .Range("D8").Value + cell.Offset(0, -5).Value & Chr(10)
                End If
                Next
    Cependant, je n'arrive pas à m'y retrouver avec les cell, d'ailleurs, dans ce code, il y a une variable cell et d'autres cell qui se baladent, je n'arrive pas à différencier le cell[variable] des autres cell.

    Avez-vous une idée de comment je peux faire pour lui dire de faire Hi/K1 < 3 avec ce bout de code ci-dessus ?

    Un deuxième soucis rencontré : je vais placer ce genre de code au moins 4 fois dans mon bouton, j'ai donc écris le code ci-dessus, puis un autre dans le même bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Dim postit
        postit = Sheets("Post_it").Range("C" & Rows.Count).End(xlUp).Row
        For Each cell In Sheets("Post_it").Range("K4:K" & postit)
        If cell > Sheets("Post_it").Range("K3").Value And cell.Offset(0, 9) > Sheets("Post_it").Range("T3").Value Then
        .Range("D24").Value = .Range("D24").Value + cell.Offset(0, -8).Value & Chr(10)
        End If
        If cell < 5 And cell.Offset(0, -6) > 2 Then
        .Range("C24").Value = .Range("C24").Value + cell.Offset(0, -8).Value = Chr(10)
        End If
        Next
    Cependant, il aime pas, il me met une erreur "incompatibilité de type", avez-vous une idée de comment je peux remédier au problème ?

  16. #56
    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
    Je ne sais pas si c'est que tu veux mais voilà un code qui prends les Hi/Ki à partir de la ligne 5 jusqu'à la dernière ligne et vérifie si supérieur à 3 puis retourne le nom dans la case D8.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      Dim n As Integer
                Dim cell As Range
                n = Sheets("Telephonie").Range("C" & Rows.Count).End(xlUp).Row
     
                For Each cell In Sheets("Telephonie").Range("H5:H" & n)
                if cell.Offset(0,3).value <> 0 then
                If cell.value/cell.Offset(0, 3).value > 3 Then
                .Range("D8").Value = .Range("D8").Value + cell.Offset(0, -5).Value & Chr(10)
                End If
                End if
     
     
                Next

  17. #57
    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
    Je te remercie ! Cependant, le truc c'est que je sais pas si ça va fonctionner car comme je mets dans un programme où j'ai déjà fais un dim cell as range, et que là, c'est un "for each cell in sheets(autre feuille).range(autre plage)"

  18. #58
    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
    A la limite remplace cell par un autre nom de variable dans son code, ca n'a pas vraiment d'importance du moment que tu utilises le même nom dans ce for each

  19. #59
    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
    Mais si à la place de j'écris Il faudra mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For each bidule in ..
    if bidule.value = ... and bidule.offset ...
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For each cell in ...
    if cell.Value = .... and cell.offset ..

  20. #60
    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
    For each bidule

    Dans le code de kiouane ca donnera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim n As Integer
                Dim bidule As Range
                n = Sheets("Telephonie").Range("C" & Rows.Count).End(xlUp).Row
     
                For Each bidule In Sheets("Telephonie").Range("H5:H" & n)
                if bidule.Offset(0,3).value <> 0 then
                If bidule.value/bidule.Offset(0, 3).value > 3 Then
                .Range("D8").Value = .Range("D8").Value + bidule.Offset(0, -5).Value & Chr(10)
                End If
                End if

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 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, 15h30
  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, 15h01
  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, 12h33
  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, 08h37
  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, 17h32

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