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 :

VBA RANGE() CELLS()


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 80
    Par défaut VBA RANGE() CELLS()
    Bonjour,
    Je maitrise mal la notion RANGE() CELLS()! J'ai développé une petite macro pour trier un tableau, celle ci fonctionne bien, mais je dois la reproduire une vingtaine de fois (tableaux toutes les 9 colonnes), j'ai donc opté pour une routine mais je me mélange les pédales entre les range() et cells() (erreur d"exécution 1004 la méthode range a échoué).
    J'ai beau retirer, changer range en cells je n'y arrive pas.
    Avez vous une idée?

    Merci pour votre aide
    Bonne soirée
    Pascal

    macro de départ:
    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
    19
    20
    21
    22
    23
    24
    25
     
    Sub CLST1P1()
    '
    ' CLS TOUR1 POULE1
    '
    Application.ScreenUpdating = False
    Application.EnableEvents = False ' => désactive les événements
    Call DEpro
     
        Sheets("TOUR1").Select
        Range("D6:H9").Select
        Selection.Copy
        Range("D17").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
     
        Range("D17:H20").Sort key1:=Range("E17"), key2:=Range("H17"), key3:=Range("F17"), order1:=xlDescending, Header:=xlYes
     
        Range("E17:H20").ClearContents
        Range("F13").Select
    Application.EnableEvents = True ' => désactive les événements
     
     
    End Sub
    Ma routine:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Sub CLST1()
    '
    ' CLS TOUR1 POULE1
    '
    Application.ScreenUpdating = False
    Application.EnableEvents = False ' => désactive les événements
    Call DEpro
    
    '''''''''''''''''''''''''''''''''''''''''
    Dim I As Integer
    Dim L1 As Integer
    
    L1 = 4
    Sheets("TOUR1").Select
      For I = 1 To 10
          Range(Cells(6, L1), Cells(9, L1 + 4)).Select
          Selection.Copy
          Cells(17, L1).Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        
            Range(Cells(17, L1), Cells(20, L1 + 4)).Sort key1:=RANGE(Cells(17, L1 + 1)), key2:=Range(Cells(17, L1 + 4)), key3:=Range(Cells(17, L1 + 2)), order1:=xlDescending, Header:=xlYes
      
        Range(Cells(17, L1 + 1), Cells(20, L1 + 4)).ClearContents
        Cells(13, L1 + 2).Select
    
    L1 = L1 + 9
      Next
               
    End Sub

  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
    Salut.

    Cells renvoie un objet Range composé de toute les cellules de la feuille (active dans ce cas-ci). Cells(X,Y) renvoie un objet Range composé de l'unique cellule se trouvant à l'intersection de la ligne X et de la colonne Y. Note que Cells demande que tu spécifies d'abord la ligne puis la colonne (comme l'infobulle l'indique lorsque tu saisis le code).

    Nom : 2020-03-04_072637.png
Affichages : 366
Taille : 1,9 Ko

    Range(...) renvoie aussi un objet Range, mais qui peut contenir plusieurs cellules. Tu peux adresser un objet Range via son adresse en texte ( Range("c4:f19") ou via les deux cellules se trouvant au coin supérieur gauche et inférieur droit de la plage souhaitée (La plage C4:F19 pourrait s'adresser avec Range(Cells(4,3),Cells(19,6))[/c]. Tu peux aussi utiliser le nom de la plage si elle est nommée ( Range("PlageNommée") ou grâce aux références structurées d'une table de données ( Range("Tableau1") ou Range("Tableau1[Colonne1]") par exemple...
    "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...
    ---------------

Discussions similaires

  1. Filtes avancés - vba - range(cells)
    Par SKUNKY616 dans le forum Excel
    Réponses: 3
    Dernier message: 08/11/2016, 01h16
  2. [VBA - Excel - Word] Problème avec Range(Cells(1,1),Cells(10,10))
    Par Tanoffy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/10/2014, 11h07
  3. [XL-2007] Excel VBA - For each c in range - cell address?
    Par phil7578 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/05/2011, 10h19
  4. [E-03][VBA]Worksheet.Cells.Range(x, y) déclenche une erreur
    Par DonkeyMaster dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/04/2008, 16h18

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