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 :

Retrancher une (des) cellules à une plage de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 12
    Par défaut Retrancher une (des) cellules à une plage de données
    Bonjour à tous,

    J'ai une plage de données sur VBA du type colonne = Union(Cells(2, 2), Cells(3, 2), Cells(4, 2), Cells(5, 2)) et je voudrais créer une nouvelle plage à partir de "colonne" mais en enlevant une ou des cellules, connaissez vous la syntaxe pour cette opération sur VBA?

    Merci beaucoup d'avance

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Bonjour,

    là l'Union ne représentant pas des colonnes, il va falloir effectuer une présentation digne de ce nom : claire & exhaustive …



    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 12
    Par défaut
    Ma plage de données initiale est la suivante :

    14,06
    11,70
    9,70
    12,29
    12,04
    16,08
    13,99

    J'aimerais créer une deuxième plage qui contienne toutes ces données sauf une, (par exemple la deuxième : 11,70).

    Est-ce plus clair?

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut





    Set Variable = Union([B1], [B3:B7])


  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    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
    Private Sub Workbook_Open()
    Dim colonne As Range
    Dim colonne2 As Range
    Set colonne = Union(Cells(2, 2), Cells(3, 2), Cells(4, 2), Cells(5, 2))
    Set colonne2 = Union(colonne(1, 1), colonne(4, 1))
    For i = 1 To colonne.Count
        Debug.Print colonne(i).Address & " : " & colonne(i)
         colonne2(i) = "TITI"
    Next
    Debug.Print colonne2.Address
    For i = 1 To colonne2.Areas.Count
        colonne2.Areas(i) = "Toto"
       Debug.Print colonne2.Areas(i).Address & " : " & colonne2.Areas(i)
    Next
     
    End Sub

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 12
    Par défaut
    Pardon j'aurais dû exposer le problème dans son entier :

    Je pars de cette plage de données :

    14,06
    11,70
    9,70
    12,29
    12,04
    16,08
    13,99

    Et j'ai des boucles If imbriquées qui, à chaque étape, utilisent la plage de donnée précédente en enlevant le maximum de cette plage.

    Exemple ici ma premiere plage sera ([A1:A7]), ma deuxième plage sera ([A1:A5],[A7]), ma troisième plage ([A2:A5],[A7]), ma quatrième ([A2:A5]), et je m'arrête là je ne vais pas jusqu'à garder une seule cellule.

    J'aimerais donc à chaque étape redéfinir la nouvelle colonne en fonction: de l'ancienne et de la cellule qui a été utilisée à l'étape précédente.

    Concretement mon code se déroule de la façon suivante :


    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
    33
    34
    35
    36
    37
    38
    39
    Sub test()
     
    Dim colonne1 As Range
    Dim colonne2 As Range
    Dim colonne3 As Range
    Dim colonne4 As Range
     
    Set colonne1 = Union(Cells(2, 2), Cells(3, 2), Cells(4, 2), Cells(5, 2), Cells(6, 2), Cells(7, 2), Cells(8, 2))
    A1 = WorksheetFunction.Max(colonne1) 'Prix maximum 1
    F1 = WorksheetFunction.Match(A1, colonne1, 0) 'Numero de ligne de la cellule contenant le max1 moins 1
    S1 = Cells(F1 + 1, 1).Value 'Nombre d'heures disponibles pour le prix max1
     
        If S1 < 5.5 Then
                        Set colonne2 =??
                        A2 = WorksheetFunction.Max(colonne2) 'Prix maximum 2
                        F2 = WorksheetFunction.Match(A2, colonne2, 0) 'Numero de ligne de la cellule contenant le max2 moins 1
                        S2 = Cells(F2 + 1, 1).Value 'Nombre d'heure disponibles pour le prix max 2
     
                        If S1 + S2 < 5.5 Then
                                                Set colonne3 = ??
                                                A3 = WorksheetFunction.Max(colonne3) 'Prix maximum 3
                                                F3 = WorksheetFunction.Match(A3, colonne3, 0) 'Numero de ligne de la cellule contenant le max3 moins 1
                                                S3 = Cells(F3 + 1, 1).Value 'Nombre d'heures disponibles pour le prix max 3
     
                                                If S1 + S2 + S3 < 5.5 Then
                                                                           Set colonne4 = ??
                                                                           A4 = WorksheetFunction.Max(colonne) 'Prix maximum 4
                                                                           Cells(9, 5).Value = S1 * A1 + S2 * A2 + S3 * A3 + (5.5 - (S1 + S2 + S3)) * A4 'Pmax
     
                                                                       Else: S33 = 5.5 - (S1 + S2)
                                                                             Cells(9, 5).Value = S1 * A1 + S2 * A2 + S33 * A3 'Pmax
     
                                          Else: S22 = 5.5 - S1
                                                Cells(9, 5).Value = S1 * A1 + S22 * A2 'Pmax
     
                    Else: Cells(9, 5).Value = 5.5 * A1 'Pmax
     
     
    End Sub

  7. #7
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour

    Es-tu obligé d'utiliser une méthode aussi complexe?

    Un simple tri alphanumérique de la colonne te donnerait facilement les valeurs Max en ordre décroissant.

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 11h17
  2. Réponses: 2
    Dernier message: 31/10/2011, 12h45
  3. Réponses: 7
    Dernier message: 25/03/2011, 11h52
  4. Réponses: 4
    Dernier message: 15/10/2009, 14h33
  5. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 14h35

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