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 :

Array mal écrit ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Divers
    Inscrit en
    Février 2017
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Divers

    Informations forums :
    Inscription : Février 2017
    Messages : 282
    Points : 89
    Points
    89
    Par défaut Array mal écrit ?
    Bonjour,

    Je débute avec Array

    ai je mal écrit mon code car il bloque sur .range ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim R As Range
     
    For Each R In Sheets.Range(Array("C3", "C4", "G4", "J3", "J4", "N3", "N4"))
        .NumberFormat = "[h]:mm"
    Next R
    Merci

  2. #2
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Sauf erreur, un Array ne peut être l'objet que d'une collection (Worksheets...)

    Tu peux donc
    - déclarer un Array
    - balayer ses items pour les utiliser comme argument de l'objet Range auquel tu affectes la propriété

    Reviens si nécessaire

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  3. #3
    Membre régulier
    Homme Profil pro
    Divers
    Inscrit en
    Février 2017
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Divers

    Informations forums :
    Inscription : Février 2017
    Messages : 282
    Points : 89
    Points
    89
    Par défaut
    Comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Dim R As Range
    '
    'For Each R In workSheets.Range(Array("C3", "C4", "G4", "J3", "J4", "N3", "N4"))
    '    .NumberFormat = "[h]:mm"
    'Next R

  4. #4
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Non.
    Je t'ai décrit le processus.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Le Array n'est pas ton seul problème.

    J'ai un gros doute aussi le le "Sheets" qui précède le Range.

    Et une certitude que le "." devant Number ne sera pas suffisant pour le relier à un Range (étant donné qu'il n'y a pas de With)

    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Base 1
    Dim R As Long, S As Worksheet, Liste As Variant
     
    Liste = Array("C3", "C4", "G4", "J3", "J4", "N3", "N4")
     
    For Each S In ActiveWorkbook.Worksheets
        For R = 1 To UBound(Liste)
            S.Range(Liste(R)).NumberFormat = "[h]:mm"
        Next R
    Next S
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Autre solution : Tu sélectionnes les cellules en question et tu nommes la sélection par exemple maPlage, ce qui réduira ton code à une ligne et évitera la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub t1()
     Range("maplage").NumberFormat = "[h]:mm"
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Une précision.

    Sur la base de ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
     
    Sub modif_format()
     
    Dim larr As Variant, l As Variant
     
    larr = Array("C3", "B4", "D2")
    For Each l In larr
            Worksheets(1).Range(l).NumberFormat = "0.00"
    Next l
    End Sub
    L'argument de l'objet Range est ici une chaîne de caractères.
    Pour autant, la conversion de l'item n'est pas obligatoire.
    Du moins sur Excel 2016, VBA effectue automatiquement cette conversion.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  8. #8
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Hé salut Philippe,

    Tu sélectionnes les cellules en question et tu nommes la sélection par exemple maPlage
    Une autre possibilité serait d'utiliser l'objet Union.

    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
    Option Explicit
     
    Sub modif_format()
     
    Dim larr As Variant, l As Variant, u As Range
     
    larr = Array("C3", "B4", "D2")
    For Each l In larr
            If u Is Nothing Then
                    Set u = Worksheets(1).Range(l)
            Else
                    Set u = Union(u, Worksheets(1).Range(l))
            End If
    Next l
     
    u.NumberFormat = "0.0"
     
    Set u = Nothing
     
    End Sub
    Vraiment pour se faire plaisir.
    Soyons fous!

    Bon week-end à vous et bon week-end au Forum.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  9. #9
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Je plussoie sans la moindre hésitation la proposition de Philippe Tulliez, que je salue.

    A MarcelG, la manière dont tu construis la plage avec Union n'est nécessaire que lorsque l'on ne sait pas encore de quoi sera composée la plage, ce qui n'est pas le cas ici.)
    Utilise directement Union.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  10. #10
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut Unparia,

    A MarcelG, la manière dont tu construis la plage avec Union n'est nécessaire que lorsque l'on ne sait pas encore de quoi sera composée la plage, ce qui n'est pas le cas ici.)
    Utilise directement Union.
    Tout à fait.
    J'utilise cette construction notamment avec Find.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


Discussions similaires

  1. Array mal formaté
    Par okoweb dans le forum Langage
    Réponses: 13
    Dernier message: 09/10/2013, 17h45
  2. [HTML 4.0] Code très mal écrit avec plusieurs HTML, HEAD
    Par beegees dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/06/2010, 15h20
  3. Réponses: 5
    Dernier message: 16/02/2010, 09h27
  4. Bulk avec un CSV mal écrit
    Par mandaillou dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 16/01/2006, 12h16

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