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 :

définir une plage de cellule par référence à la recherche d'une autre cellule


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 18
    Points : 3
    Points
    3
    Par défaut définir une plage de cellule par référence à la recherche d'une autre cellule
    Bonjour

    qui pourrait m'indiquer le code à utiliser pour (sous vba 97)

    recopier vers le bas la première valeur trouvée en colonne A (ici valeur 163961 qui serait en A22 par exemple ) jusqu'à rencontrer la prochaine cellule qui contient une valeur (ici en A102 )

    NB:a chaque fois des cellules vides séparent les deux valeurs

    et ainsi de suite (boucle ...) cette dernière valeur rencontrée serait recopiée dans les cellules vides vers le bas jusqu'à rencontrer la prochaine cellule comportant une valeur...

    Merci pour votre aide

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Donc, si je reformule, tu cherches une valeur.
    Une fois trouvée tu veux la recopier tant que les cellules sont vides
    Tu cherches une nouvelle valeur, tu la recopies tant que les cellules sont vides...
    etc.
    Si c'est ça, qu'est ce qui arrête ta boucle ?
    Si ce n'est pas ça, tu dis
    A+

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    en effet dans l'idéal le code repèrerait la dernière cellule "servie" de ma colonne B

    Merci

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    On manque d'info mais tu peux regarder si ça t'irait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub RecopierDerniereValeurTrouvee()
    Dim maVal As Variant, c As Variant, DerLig As Long
    Dim FL1 As Worksheet, Plage As Range, Valeur
        Set FL1 = Worksheets("Feuil1")
        DerLig = FL1.Range("B1").SpecialCells(xlCellTypeLastCell).Row
        Set Plage = FL1.Range("B1:B" & DerLig)
        For Each Cell In Plage
            If Cell = "" Then
                Valeur = Cell.Offset(-1, 0).Value
                Cell.Value = Valeur
            End If
        Next
    End Sub
    A+

    PS - Qu'est-ce que c'est que cette manie de ne pas répondre aux questions posée ? Hein ?

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    désolé je croyais avoir répondu à la question...

    j'ai essayé le code une erreur d'exécution 100' est renvoyée et renvoie à la ligne Valeur = Cell.Offset(-1, 0).Value

    cela provient t'il de cette ligne ? Dim FL1 As Worksheet, Plage As Range, Valeur

    ou valeur n'est pas défini ... (si je dit des bétises faut pas m'en vouloir je débute vraiment et n'en suit m^me pas encore aux variable)

    j'ai donc déclaré (au hasard ) value de la sorte
    Dim FL1 As Worksheet, Plage As Range, Valeur as variant

    j'ai executée la macro qui s'éxécute sans erreur mais ne produit aucun résultat

    je pense que je me suis mal exprimé sur ce que j'espérai faire , j'ai don joint un txt montrant un exemple du fichier excel que j'ai à traiter ...

    donc dans l'exemple la 1ère valeur en colonne A serait trouvée (donc 163961) et serait recopiée vers le bas jusqu'à la prochaine valeur ici 163b63

    La boucle continuerait ainsi jusqu'à :

    - la dernière ligne du tableau (soit la dernière ligne de la colonne B)

    dans le code que vous m'avez fourni , je ne vois aucune référence à la colonne A (mais peut être cela est il implicite dans les formules je ne maîtrise vraiment pas )

    Merci pour votre aide
    Fichiers attachés Fichiers attachés

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    J'ai regardé ton fichier. Et puis j'ai relu ta question. Je me suis "simplement" trompé de colonne
    Ce qui m'a trompé, c'est
    en effet dans l'idéal le code repèrerait la dernière cellule "servie" de ma colonne B
    En fait, comme tes valeurs se trouvent également sur la colonne A, on n'a pas à s'occuper de la colonne B. Fais un test avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub RecopierDerniereValeurTrouvee()
    Dim maVal As Variant, c As Variant, DerLig As Long
    Dim FL1 As Worksheet, Plage As Range, Valeur
        Set FL1 = Worksheets("Feuil1")
        DerLig = FL1.Range("A1").SpecialCells(xlCellTypeLastCell).Row
        Set Plage = FL1.Range("A1:A" & DerLig)
        For Each Cell In Plage
            If Cell = "" Then
                Valeur = Cell.Offset(-1, 0).Value
                Cell.Value = Valeur
            End If
        Next
    End Sub
    Tu dis
    A+

  7. #7
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    alors j'ai essayé :j'ai toujours une erreur d'exécution '1004':
    erreur définie par l'application ou par l'objet

    le débogage renvoie à la ligne suivante du programme

    Valeur = Cell.Offset(-1, 0).Value


    ...

    Merci

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Essaie en déclarant (en seconde ligne de la macro)
    Mais je ne sais pas... Ce code fonctionne chez moi, j'ai testé avec les modifs effectuées
    Montre le code que tu as "réellement" mis.
    A+

  9. #9
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    j'ai fait copier coller du code que tu m'a proposé

    j'ai rajouté Dim cell as range en 2nde ligne ==> toujours m^me erreur

    Etant vraiment débutant ,est ce que j'enregistre correctement ma macro?

    je m'explique

    j'ouvre mon fichier excel à transformer qui s'appelle par exemple VBA test. xls
    je fais macro / VIsual basic

    Une feuille "VBA" nommée VBA TEST.xls - Feuil1 (Code) " s'ouvre

    je suis dans le menu (Général)

    et je colle stricto sensu le code précédent...

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Meûh non !
    Vas dans l'éditeur VB, fais Insertion -> Module standard
    Puis, deux clics sur "Module1", là tu colles le code.
    Ensuite tu te places n'importe où dans le code et tu frappes la touche F5 (équivaut au triangle de lancement)
    A+

    PS - Et supprime le code qui se trouve dans la feuille de code de la feuille de calculs.

  11. #11
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    j'ai vraiment de grosses lacunes , mais bon merci pour ta patience

    donc je suis dans VBA editor/VBA project (classeur1) /

    j'insère un module je suis donc dans Modules / module 1

    et là je fais copier coller du code puis F5 et là ... de nouveau erreur 1004 !!!

    NB: mon classeur1 qui est ouvert contient mes deux colonnes à modifier
    et j'ao bien effacé le code que je n'avais pas mis au bon endroit

    ou est ce que je foire

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ta feuille n'est pas protégée en écriture ?
    Dans Excel : Outils -> Protection -> Ôter la protection
    Tu dis

  13. #13
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    non la feuille n'est pas protégée...

    ça le fait à la fois sur mon ordi perso mais aussi sur celui du boulot

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Comment se nomme ta feuille ?

  15. #15
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    bonjour

    ma feuille senomme Feuil1 je ne l'ai pas renommée et mon classeur est classeur 1 idem pas renommé

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Question rituelle : Où places-tu ton code ? Tu dois le placer dans un module standard : Editeur VB -> Insertion -> Module standard
    Tu as fais ça ?
    A+

  17. #17
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    j'ai fait comme tu me l'a dit à savoir

    vba editor/ insertion module (standard n'ai pas précisé) après il y a module de classe mais j'ai pris module "tout court"

    un dossier module 1 apparait dans mon VBA project (classseur 1) je double clic dessus je copie colle le code dedans puis je fait F5...

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Et alors ?

  19. #19
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    t'es dur

    et alors rebelote erreur 1004 ...etc renvoi a à la ligne de code valeur = ...

  20. #20
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    joins ton fichier zippé (pas .rar stp)

Discussions similaires

  1. Réponses: 16
    Dernier message: 11/12/2013, 11h20
  2. Réponses: 3
    Dernier message: 12/09/2013, 11h27
  3. Réponses: 4
    Dernier message: 11/08/2008, 15h29
  4. Recherche d'une plage de cellules identiques entre 2 feuilles Excel
    Par asayeh dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/06/2008, 22h39
  5. Réponses: 10
    Dernier message: 25/05/2007, 17h05

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