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 :

copier donnée valide dans une autre feuille


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Par défaut copier donnée valide dans une autre feuille
    Bonjour tout le monde j'ai du mal à effectuer un petit code

    Je dispose d'un textbox1 et d'un CommandButton1 sur le userform.
    De même que je dispose de donnée sur excel (5 colonnes et N lignes)

    Lorsque l'utilisateur tape un seuil dans le textbox1, celui ci est comparé à ma colonne4 (excel), si seuil>intensité alors on récupère la ligne et on la met dans la feuille2 par exemple

    Voici un exemple de mes données sur excel:

    5,54 6,98 12,87 5,4 6,62
    7,12 8,65 15,65 8,85 9,65
    8,7 10,32 18,43 12,3 12,68


    Mes intensités sont donc 5,4 ; 8,85 ; 12,.3

    Si l'utilisateur tape un seuil dans le textbox1 par exemple 8,9 alors il ne restera plus que la valeur 12,3 car:
    5,4<8,9
    8,85<8,9

    Par conséquent la ligne:

    8,7 10,32 18,43 12,3 12,68

    sera recopié dans une nouvelle feuille

    Voici mon début de 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
    Private Sub CommandButton1_Click()
    Dim seuil, intensite As Double
    Dim n As Integer
     
    TextBox1.Text = seuil
     
     
    For n = 1 To 999
    Cells(n, 4) = intensité
    If seuil > intensité Then
    (récupérer la ligne correspondante et la mettre dans la feuille2)
    End If
    Next n
    End Sub
    Je ne sais pas comment dire ce qui est entre parenthèse dans mon code, j'ai testé différentes solutions mais cela ne marche pas

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    déjà là une inversion

    je pencherai pour :

    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Par défaut
    Bonjour,

    Oups euh oui en effet :

    c'est mieux

  4. #4
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 155
    Par défaut
    Je crois que tu as d'abord fait tes assignations de valeur à l'envers. C'est la Variable seuil qui doit valoir la valeur du text box et non l'inverse. Ci-dessous, une proposition pour le Copier/Coller
    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
    Private Sub CommandButton1_Click()
    Dim seuil, intensite As Double
    Dim n As Integer
     
    seuil =  TextBox1.Text 'on assigne une valeur à seuil
    p=0  
    For n = 1 To 999
    intensité= Cells(n, 4)  'on assigne une valeur à intensité
    If seuil > intensité Then
        p=p+1
        Rows(Cstr(n) & ":" & Cstr(n)).Select
        Selection.Copy
        Sheets("Feuil2").Select
        Rows(Cstr(p) & ":" & Cstr(p)).Select
        ActiveSheet.Paste
    End If
    Next n
    End Sub
    Bonne chance!

  5. #5
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Par défaut
    Merci AnneCa, ui en effet erreur de débutante, je comprend

    Par contre le "p" n'est pas déclaré, est ce normal ?
    Et lorsque je test ça ne me donne pas le résultat escompté

    J'ai bien des données transférés sur la feuille2 par contre elle ne corresponde pas à mon test

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    jenlèverais juste les .select

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If seuil > intensité Then
        p=p+1
        Rows(Cstr(n) & ":" & Cstr(n)).Copy
        Sheets("Feuil2").Rows(Cstr(p) & ":" & Cstr(p)).Paste
    End If
    et pour racourcir on peut mettre la cible tout de suite après le copy
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If seuil > intensité Then
     p=p+1
     Rows(CStr(n) & ":" & CStr(n)).Copy Sheets("Feuil2").Rows(CStr(p) & ":" & CStr(p))
    End If
    Edit j'ai pas vu ton post
    dim p as long

    Pour le test met des pose et regarde ce que contiennent tes variables seuil et d'intensité

  7. #7
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Par défaut
    Avec ce code, j'ai uniquement la première ligne qui est recopié et ceci quelque soit le seuil rentré...

    p.s.: j'ai bien déclaré le "p"

  8. #8
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 155
    Par défaut
    Ajoute cette ligne de code après intensité = Cells(n,4)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.print n & ": intensité = " & intensite  & ", " Seuil =  " & Seuil
    Une fois la macro exécutée, vérifie que tu es bien passée par toutes les étapes et que les valeurs on bien été lues

  9. #9
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour le fil 2 questions
    question1:c est des points ou des virgules dans ta feuille?
    question2: si textbox1 =5.5 tu recopy tes 2 dernieres lignes?

  10. #10
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Par défaut
    Bonjour laetitia, alors j'ai des virgules sur ma feuille excel.

    Oui c'est exactement ça, si textbox=1 = 5,5 alors on recopie les deux dernieres lignes.
    Je n'arrive toujours pas à le faire fonctionner correctement

  11. #11
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    re le fil code je suppose tes donnees de A2 a E (x) nb..lignes jusqu a la derniere non vide code du CommandButton1

    Option Explicit

    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
    Dim x As Long, i As Long, k As Long, t As Variant, t2()
    Private Sub CommandButton1_Click()
    On Error Resume Next
    Application.ScreenUpdating = False
    If TextBox1.Value = "" Then MsgBox "textbox vide": Exit Sub
    t = Range("a2:e" & Range("a65536").End(xlUp).Row)
    x = 1
    For i = 1 To UBound(t)
    If t(i, 4) > Val(TextBox1.Value) Then
    ReDim Preserve t2(1 To 5, 1 To x)
    For k = 1 To 5
    t2(k, x) = t(i, k)
    Next k: x = x + 1: End If: Next i
    Sheets(2).Range("a65536").End(xlUp).Offset(1, 0).Resize(UBound(t2, 2), UBound(t2, 1)) = Application.Transpose(t2)
    Erase t, t2: Beep
    End Sub
    pour s affranchir du probleme de virgule le code ci dessous si tu tapes une virgule changement par point plus facile pour le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub textBox1_keyPress(ByVal keyAscii As MSForms.ReturnInteger)
    If keyAscii = Asc(",") Then keyAscii = Asc(".")
    End Sub

  12. #12
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Par défaut
    Merci beaucoup Laetitia

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. copier un tableau dans une autre feuille
    Par anouar2012 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/11/2012, 10h16
  2. copier coller couleur dans une autre feuille grâce a un bouton
    Par antoine2933 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/07/2011, 23h52
  3. [XL-2003] Copier des lignes dans une autre feuille à la première ligne vide
    Par PasDan dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/09/2010, 14h34
  4. Pour chaque ligne supprimée, copier cette ligne dans une autre feuille
    Par athos7776 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/10/2008, 04h35
  5. Copie de données filtrées dans une autre feuille
    Par papagei2 dans le forum Excel
    Réponses: 1
    Dernier message: 30/08/2007, 17h16

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