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

Excel Discussion :

Macro copier certaines données ligne vers certaines cellules avec condition textbox [XL-2003]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 22
    Points : 10
    Points
    10
    Par défaut Macro copier certaines données ligne vers certaines cellules avec condition textbox
    Bonjour,
    Je cherche à utiliser un userform avec une textbox et un commandbutton pour chercher un nombre dans une feuille, identifier la ligne présentant ce nombre, sachant qu'il ne peut y avoir qu'une ligne (un nombre par ligne), copier les infos de certaines cellules de cette ligne vers certaines cellules d'une autre ligne, d'une autre feuille, j'espère avoir été assez clair.
    J'ai commencé a bossé sur un code mais il ne fonctionne pas, je voudrais vous le soumettre.

    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 TBLF As Range
    Dim CIBLE As Variant
    With Worksheets("BDD")
    For Each CIBLE In .Range("A1:A" & Range("A65536").End(xlUp).Row)
    Set TBLF = .Find(TextBox1.Value, LookIn:=xlValues)
    If Not TBLF Is Nothing Then
    Rows(TBLF.Row + 1).Insert Shift:=xlDown
    Cells(TBLF.Row + 1, 2) = Sheets("CR_INTER").Range("A" & CIBLE.Row)
    End If
    Next
    End With
    End Sub
    Merci

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,

    Je pense que tu t'es emmêlé les pinceaux entre la boucle et le .find
    Soit tu fais une boucle et tu teste chaque valeur, soit tu fis un .find sur un Range.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CommandButton1_Click()
    Dim TBLF As Range, MaPlage as range
    Dim CIBLE As Variant
    Set MaPlage = Worksheets("BDD").Range("A1:A" & Range("A65536").End(xlUp).Row) '!Ca te limite à 65536 ligne alors qu'à partir de XL2007 il y en a p
    + d'1million
    Set TBLF = maplage.Find(TextBox1.Value, LookIn:=xlValues)
    If Not TBLF Is Nothing Then
    Rows(TBLF.Row + 1).Insert Shift:=xlDown
    Cells(TBLF.Row + 1, 2) = Sheets("CR_INTER").Range("A" & CIBLE.Row)
    End If
     
    End Sub
    J'ai fais les adaptations à la volée car pas le temps de tester, j'espère donc ne pas avoir fait de coquille sinon l'aide VBA avec .FIND est à mon sens assez clair.

    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 22
    Points : 10
    Points
    10
    Par défaut Macro copier certaines données ligne vers certaines cellules avec condition textbox
    Bonjour, et merci pour cette rapide réponse je vais essayer.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 22
    Points : 10
    Points
    10
    Par défaut Macro copier certaines données ligne vers certaines cellules avec condition textbox
    Re,
    J'ai testé, et il me dit qu'il y a une erreur d'éxécution '424' objet requis, à cette ligne là...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cells(TBLF.Row + 1, 2) = Sheets("CR_INTER").Range("A" & CIBLE.Row)

  5. #5
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Au temps pour moi, je n'ai pas réutilisé la variable CIBLE.

    Du coup en y regardant de plus près, j'avoue être un peu perdu.
    Peux tu réexpliquer l'objectif et les relations entre ta feuille BDD et CR_Inter
    (Je veux dire, où veux tu chercher et comment veux tu définir où copier les infos)

    A

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 22
    Points : 10
    Points
    10
    Par défaut Macro copier certaines données ligne vers certaines cellules avec condition textbox
    Re,
    Et bien tout d'abord merci pour ta sollicitude, pour résumé j'ai ma feuille BdD qui contient ma plage de donnée pouvant aller de quelques lignes à plusieurs centaines, les infos dont j'ai besoin se trouve dans cette plage, chaque lignes de cette plage est identifié par une référence, ma feuille CR_Inter est en faite ma feuille résultat là où les infos contenues dans les lignes de la plage de données de ma feuille BdD sont censé s'inscrire, et tout ça orchestré par un userform avec textbox où l'on tape la référence qui nous intéresse qui est dans la macro la condition de recherche, pour en sortir les infos qui nous intéresse, voilà, j'espère avoir été assez clair.

  7. #7
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Re,

    Juste une remarque préalable...pourquoi pas un Tableau Croisé Dynamique avec le champs qui contient la référence en champ de page?

    Sinon, je verrais le code comme ceci (Attention, écrit à la volée, j'espère que c'est OK):

    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
    Private Sub CommandButton1_Click()
    Dim WsS as worksheet, WsC as worksheet
    Dim TBLF As Range, MaPlage as range
    Dim DerLigS as long
     
    set WsS = sheets("BDD")
    set WsC = sheets("CR_Inter")
    DerLigS=WsS.cells(WsS.columns(1).cells.count,1).end(xlup).row
     
    Set MaPlage = WsS.Range(WsS.cells(1,1),WsS.cells(derligs,1))
    Set TBLF = maplage.Find(Me.TextBox1.Value, LookIn:=xlValues)
    If Not TBLF Is Nothing Then
    'Cest ici que c'est pas claire pour moi...
    wsc.cells(2,1)=wss.cells(TBLF.row,1) 'Exemple pour écrire en B1 la référence
    End If
     
    End Sub
    Et pour finir, si ça fonctionne, pense à faire une liste déroulante avec tes références, par expérience ça t'éviteras des erreurs de saisies dans le textbox

    A+

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 22
    Points : 10
    Points
    10
    Par défaut Macro copier certaines données ligne vers certaines cellules avec condition textbox Répondre à la discussion
    Salut,
    et bien j'ai pas bien saisi pourquoi utiliser un tableau croisé dynamique, mais je pense en avoir besoin, cependant pour revenir à nos moutons, ça marche nickel, sauf que quand je rentre mes références, j'aimerai qu'elles s'inscrivent ligne par ligne et non sur la même ligne, mais sinon tip-top caviar.
    Concernant la liste déroulante je sais pas trop, car je peux avoir des centaines voir des milliers de lignes concernées, alors si j'ouvre ma liste déroulante, d'ailleurs je maitrise pas encore ce sujet, et que je me retrouve à chercher parmi mon milliers de référence, à moins que l'on puisse faire un genre de saisie automatique...je sais pas...
    En tout cas merci, bcp.

  9. #9
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Re,
    Ravi que ça te plaise
    J'ai pas bien compris la remarque:
    j'aimerai qu'elles s'inscrivent ligne par ligne et non sur la même ligne
    mais je pense que tu pourras gérer.

    Pour une liste déroulante, tu ajoute l'objetComboBox à ton UserForm (par habitude je nomme mes objets sur UF en commencant par Obj_; ca me facilite le boulot) on dit donc Obj_ListRef

    Imaginons donc tes références sur la feuille paramètres dans la colonne A
    Ce code est à placer dans l'initialisation de l'UF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim WsP as worksheet
    Dim DerLigP as long, R as long
    Dim MaRef as string
    set WsP = Sheets("Parametres")
    DerLigP=wsp.cells(wsp.columns(1).cells.count,1).end(xlup).row
     
    For R = 2 to derligp 'je commence à 2 car j'imagine un titre
         MaRef=wsp.cells(r,1) 'Affecte à la variable la référence
         Me.Obj_ListRef.additem MaRef 'Ajoute à la ComboBox la référence
    next r
    Tu verras qu'il y a bien une saisie prédictive, je pense donc que ce sera d'une grande aide.

    A+

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Fvandermeulen Voir le message
    Re,
    Ravi que ça te plaise
    J'ai pas bien compris la remarque: mais je pense que tu pourras gérer.
    Bonjour, et bien tu vois actuellement avec ma dernière version du code; les infos viennent se coller sur la première ligne à chaque fois que je lance la macro, hors il faudrait qu'elles se collent ligne par ligne càd les unes en dessous des autres, j'ai commencé à chercher une solution en ajoutant une ligne, et lui disant d'inscrire dans cette ligne les infos mais sans succès.

    Merci bcp pour ton aide, je pense que la combobox je vais l'utiliser avec une autre fonction, je la garde sous le coude.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/01/2014, 21h08
  2. [XL-2003] Macro Copier/Coller données Excel vers document Word avec Signets
    Par Julien91080 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/05/2013, 12h28
  3. copier coller de ligne vers un autre onglet
    Par dinettes dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/06/2010, 17h43
  4. [XL-2007] Macro Copier sur premiere ligne vide
    Par Kernoz dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/02/2010, 14h24
  5. Réponses: 27
    Dernier message: 05/09/2008, 17h01

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