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 :

Modifications macro existante


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Menuisier
    Inscrit en
    Octobre 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Menuisier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2015
    Messages : 38
    Par défaut Modifications macro existante
    Bonjour à tous,

    Voila j'ai récupérer une macro qui me plait bien mais je n'arrive pas à la modifier...

    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
     
     Sub dernièrecolonne()
      Dim i As Long, j As Long, derLig As Long, derCol As Integer, phrase As String, debLig As Integer, debCol As Integer
        debLig = 2
        debCol = 16
        derLig = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
        derCol = Cells(debLig, Columns.Count).End(xlToLeft).Column
        phrase = "Affectée à :"
        For i = debLig + 1 To derLig
        For j = debCol To derCol
        If Cells(i, j) = 1 Then
        phrase = phrase & " ; " & Cells(debLig, j)
        End If
        Next j
        If WorksheetFunction.Sum(Range(Cells(i, debCol), Cells(i, j))) > 0 Then
        Cells(i, derCol + 1) = phrase
        Else
        Cells(i, derCol + 1) = ""
        End If
        phrase = "Affectée à"
        Next i
     End Sub

    J'ai bien compris comment déclarer à partir d’où commencer la formule. Mon problème c'est que je voudrais exécuter cette macro sur plusieurs plages:

    ex: Colonne AE à BC ; BE à CC ; etc...


    De plus, pour l'affichage du résultat, au lieu de l'indiquer sur la dernière colonne vide du tableau je voudrais pouvoir choisir le numéro de colonne.

    Quelles modifications je dois apporter ? Je suis très novice en VBA, j'arrive à comprendre et créer des choses très simples mais là j'avoue que je suis un peu perdu

  2. #2
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    Voici ce que je te propose.
    Au début de la macro, 3 boîtes de dialogue s'affichent.
    Elles permettent d'indiquer le NUMERO des colonnes à traiter.

    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
     Sub dernièrecolonne()
      Dim i As Long, j As Long, derLig As Long, derCol As Integer, phrase As String, debLig As Integer, debCol As Integer
      Dim colresultat As Integer
      debLig = 2
        'debCol = 1
        debCol = InputBox("Indiquer le N° de la première colonne à traiter")
        derLig = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
        'derCol = Cells(debLig, Columns.Count).End(xlToLeft).Column
        derCol = InputBox("Indiquer le N° de la dernière colonne à traiter")
        colresultat = InputBox("Indiquer le N° de la colonne où afficher le résultat")
        phrase = "Affectée à :"
        For i = debLig + 1 To derLig
            For j = debCol To derCol
                If Cells(i, j) = 1 Then
            End If
            Next j
            If WorksheetFunction.Sum(Range(Cells(i, debCol), Cells(i, j))) > 0 Then
                Cells(i, colresultat) = phrase
            Else
                Cells(i, colresultat) = ""
            End If
            phrase = "Affectée à"
        Next i
     End Sub
    Je te laisse voir si cela peut correspondre à ton besoin.

  3. #3
    Membre averti
    Homme Profil pro
    Menuisier
    Inscrit en
    Octobre 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Menuisier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2015
    Messages : 38
    Par défaut
    Bonjour jerome,

    merci pour ton aide.

    J'ai vraiment besoin de definir les zones dans ma macro car elles sont fixes et tres nombreuses (45).

  4. #4
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Re,

    Je veux bien que ta macro définisse les zones.

    Mais si on ne sais pas comment les définir ...

    Si tu veux qu'on t'aide, il faut nous en dire plus.
    quelles règles doit être respectées. Comment on défini la colonne qui va recevoir les résultats ???

    Moi, je ne sais pas lire dans la boule de cristal. je travail la transmission de pensée et c'est pas facile

  5. #5
    Membre averti
    Homme Profil pro
    Menuisier
    Inscrit en
    Octobre 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Menuisier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2015
    Messages : 38
    Par défaut
    D'accord, je ne sais pas vraiment de quelles infos tu as besoin....

    Dans mon fichier colonne A à P je retrouve des colonnes qui me permettent de renseigner des informations sur chaque produit (ligne); le nom; la référence; etc


    Sur les colonnes suivantes, j'ai des noms de postes. Lorsque je renseigne un 1 dans le nom de poste, cela signifie que le produit et monté sur ce poste de production.


    A chaque fin de types de postes, j'ai une colonne Total où si la somme des postes et égale ou supérieur à 1 alors afficher un 1.

    La dernière colonne doit concaténer toutes les postes dans lesquelles il y a un 1 sauf pour les sommes.


    Ex, j'ai deux types de postes cadrage et montage.


    Colonne AA : Poste cadreuse N°1
    Colonne AB: Poste cadreuse N°2
    Colonne AC: Toutes les cadreuses = SI(Somme(AA:AB)>0 ; 1 ; ""

    Colonne AD: Poste montage N°1
    Colonne AE: Poste montage N°2
    Colonne AF : Tous les postes de montages =SI(Somme(AD:AE)>0 ; 1 ; ""


    Deux produits: Ligne 3 Produit A
    Ligne 4 Produit B

    Le produit a concerne le poste cadreuse N°1 et les deux postes de montages 1 et 2
    Le produit B concerne le poste cadreuse N°2 et le poste montage N°1

    Dans la dernière colonne du tableau:

    Analyse colonne AA ; AB ; AD ; AE

    Lorsque la cellule est = à 1, concatener l'entête de chaqu'une des cellules;

    J’aurai alors pour la ligne 3: Affectée à: Cadreuse N°1 ; Poste montage N°1 ; Poste montage N°2
    Pour la ligne 4: Affectée à; Cadreuse N°2 ; Poste montage N°1


    je peux nommer les plages dans la macro (Colonne AA;AG) (Colonne AH ; BG) etc

    Ou alors, peux on dire, si la cellule contient une formule (SI(SOMME) alors ne pas concatener l'entete ?

    Je ne sais pas quelle solution est la plus simple pour vous !!

    Un grand merci pour votre aide !

    Joris

  6. #6
    Membre averti
    Homme Profil pro
    Menuisier
    Inscrit en
    Octobre 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Menuisier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2015
    Messages : 38
    Par défaut
    Une personne pourrait m’aider ?

Discussions similaires

  1. Réponses: 7
    Dernier message: 08/09/2008, 22h19
  2. Modif macro pour ne pas copier le bouton
    Par Bernard67 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 19/02/2008, 11h47
  3. Modification macro pour imprimer de telle a telle page
    Par Bernard67 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/01/2008, 10h27
  4. Automatisation d'une macro existante
    Par Benoit02 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/08/2007, 22h29
  5. Modification Macro Excel
    Par Dragon05 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/02/2007, 14h44

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