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-E]Instancier une plage de cellules prises dans plusieurs feuilles


Sujet :

Macros et VBA Excel

  1. #1
    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 546
    Points
    15 546
    Par défaut [VBA-E]Instancier une plage de cellules prises dans plusieurs feuilles
    Pour le moment, j'ai ça
    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
    Private Sub UserForm_Initialize()
    Dim fl1 As Worksheet, fl2 As Worksheet, Plage As Range, i as integer, cell as range
    Set fl1 = Worksheets("Feuil1")
    Set fl2 = Worksheets("Feuil2")
    Set Plage = fl1.Range("A1:A5")
        For i = 1 To 2 'Nbre de plages
            For Each cell In Plage
                 ComboBox1.AddItem cell.Value
            Next
            Set Plage = fl2.Range("B1:B10")
        Next
        Set Plage = Nothing
        Set fl1 = Nothing
        Set fl2 = Nothing
    End Sub
    Est-il possible (j'ai un trou) d'affecter directement les deux plages dans un seul range ?
    Marci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Je ne pense pas, car range étant lié à une feuille, il ne peut prendre que des plages de celtte feuille.

    Starec

  3. #3
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Moi je dirai oui si c'est sur une meme feuille, mais si c'est sur 2 feuilles différentes je pense pas

  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 546
    Points
    15 546
    Par défaut
    Vous avez sans doute raison

  5. #5
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    T'a fait un test quand meme ? en écrivant par exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Plage = fl1.Range("A1:A5") & fl2.Range("B1:B10")

    Sinon t'a essaéyé un truc du genre (une idée toute con qui me traverse complètement absurde) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Plage = Range(fl1.cells(1,1),fl1.cells(5,1))
    Si cela est faisable, tu pourrait peut etre t'arranger en faisant une bidouille mais j'y crois pas trop.. Le problème c'est que tes plages aussi ne sont pas le smemes et de même taille

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Je viens de faire le test avec Union.
    Dans la même feuille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Set rRange = Union(Sheets(1).Range([A1], [A10]), Sheets(1).Range([B1], [B10]))
    c'est accepté.

    Dans 2 feuilles différentes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Set rRange = Union(Sheets(1).Range([A1], [A10]), Sheets(2).Range([B1], [B10]))
    je me fais jeter

  7. #7
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    C'est bizarre quand meme ça que ça marche pas en VBA. Car quand on le fait a la mano, on peut sélectionner plusieurs feuilles et ainsi faire des modifications sur cellules, et ça le smodifie sur les 2 feuilles en meme temps..Mais par macro c'est pas possible

  8. #8
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Si les plages sont les mêmes sur les 2 feuilles, on peut le faire par macro.
    Il faut créer une instance de l'Array des feuilles et travailler sur les cellules de cette instance.

  9. #9
    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 546
    Points
    15 546
    Par défaut
    Ne te creuse pas la cervelle, illight
    Dans
    Set Plage = fl1.Range("A1:A5") & fl2.Range("B1:B10")
    On ne peut pas utiliser &. Il s'agit d'ajouter des range, non des string.
    Quant à
    Set rRange = Union(Sheets(1).Range([A1], [A10]), Sheets(2).Range([B1], [B10]))
    c'était une bonne idée mais ça ne fonctionne pas
    J'ai essayé de forcer le destin en sélectionnant les plages avec Application.inputBox mais Excel, il m'a dit "NIET !"
    Contraint et forcé, je me vois donc dans l'obligation de délester
    Merci à tous les deux

Discussions similaires

  1. Trier une plage de cellules
    Par Squelet dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 03/12/2019, 13h04
  2. [VBA-E] Exporter une plage de cellule en image GIF
    Par cafeine dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/12/2007, 17h12
  3. [VBA-E]selectionner une plage de cellules
    Par k-eisti dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 07/05/2007, 10h50
  4. [VBA-E] sommer une plage de cellules actives apres un filtre
    Par rond24 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/04/2007, 12h07
  5. [VBA-E] Copier une plage de cellules avec critère
    Par jfamiens dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 13/06/2006, 16h34

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