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 :

adapter un code [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Par défaut adapter un code
    bonjour
    J'ai récupérée le code suivant qui permet de trouver la premiere cellule vide dans une plage ( exemple A3:Z3 que l'on va nommer "tablo") .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub azer()
    ligDer = [tablo].Find("*", LookIn:=xlValues, _
        SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    premCol_T = [tablo].Item(1).Column
    colDer_T = [tablo].Columns.Count + premCol_T - 1
    colDer = Range(Cells(ligDer, premCol_T), Cells(ligDer, colDer_T)).Find("*", LookIn:=xlValues, _
        SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
    MsgBox Cells(ligDer, colDer + 1).Address
    End Sub
    Celui ci fonctionne bien mais mon probleme est que je voudrai utiliser l'adresse trouvé dans une macro .
    Par exemple dans une macro qui copie le contenu de la cellule G27, pouvoir coller dans la cellule trouvé par Sub azer.
    j'espere etre precise....

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Il y a peut-être une raison à utiliser ce code, mais je le trouve un peu complexe.

    Je te propose de travailler avec une fonction qui renvoie un objet Range correspondant à la première cellule vide d'une plage passée en paramètre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function CelluleVide(Plage As Range) As Range
      Dim Cellule As Range
      For Each Cellule In Plage
        If IsEmpty(Cellule) Then
          Set CelluleVide = Cellule
          Exit For
        End If
      Next Cellule
    End Function
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    salut

    ceci ferait-il l'affaire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function CelluleVide(Plage As Range) As Range
      Set CelluleVide = Plage.SpecialCells(xlCellTypeBlanks)
      Set CelluleVide = Cells(CelluleVide.Row, CelluleVide.Column)
    End Function

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonne idée, babaothe...

    On peut alors grouper sur une ligne et se passer de fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set CelluleVide = Plage.SpecialCells(xlCellTypeBlanks)(1, 1)
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Par défaut re
    merci de vos reponses
    en mettant cette ligne dans un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
     
        Range("G27").Select
        Selection.Copy
        Set CelluleVide = Range("A2:Z2").SpecialCells(xlCellTypeBlanks)(1, 1)
        ActiveSheet.Paste
    End Sub
    j'ai peut etre une faute de syntaxe.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par beatrice2fr Voir le message
    ...
    j'ai peut etre une faute de syntaxe.
    C'est parce que tu oublies de sélectionner CelluleVide, mais tu peux travailler avec les cellules, même pour un copier-coller, sans sélectionner les cellules.


    Je crois avoir compris que tu souhaites "boucher" la première cellule vide d'une plage

    Si tu es sûre qu'il y a une cellule vide dans la plage, tu peux faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set PlageCopiee = Range("G27")
    Set Plage = Range("A2:Z2")
    PlageCopiee.Copy Plage.SpecialCells(xlCellTypeBlanks)(1, 1)
    Sinon, tu dois tester qu'il y a au moins une vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set PlageCopiee = Range("G27")
    Set Plage = Range("A2:Z2")
    If (Plage.Cells.Count - Evaluate("counta(""" & Plage.Address & """)")) <> 0 Then
      PlageCopiee.Copy Plage.SpecialCells(xlCellTypeBlanks)(1, 1)
      else ' Eventuellement, code si pas de cellule vide
      ...
    End If
    Prends l'habitude de travailler avec des objets, c'est plus simple à maintenir...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Par défaut re
    merci de ton aide, c'est exactement le resultat escompter. Et en plus simple
    que le code de depart

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

Discussions similaires

  1. [Oracle] [PL/SQL] Adapter un code VB
    Par LoulouFifi dans le forum Oracle
    Réponses: 1
    Dernier message: 20/07/2006, 16h11
  2. Réponses: 7
    Dernier message: 24/03/2006, 09h25
  3. [débutant] Pb adaptation de code VBA
    Par delphineleclerc1 dans le forum Access
    Réponses: 9
    Dernier message: 28/02/2006, 12h58
  4. Réponses: 22
    Dernier message: 06/10/2005, 10h53
  5. [VBA Excel Word]Adapter un code Excel a Word
    Par Baxter67 dans le forum VBA Word
    Réponses: 4
    Dernier message: 08/08/2005, 23h43

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