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

Excel Discussion :

Macros - Tableau - Galères


Sujet :

Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2015
    Messages : 24
    Points : 2
    Points
    2
    Par défaut Macros - Tableau - Galères
    Bonjour à toutes et tous,

    Après avoir écumé ce super site, je me vois dans l'obligation de poster cette discussion.
    en effet, je n'ai pas réussi, soit à trouver les réponses à mes questions, soit à faire fonctionner les réponses que j'ai pu trouver ici ou là.

    Vous trouverez en pièce jointe un tableau simple, avec une pré-mise en forme.

    J'ai plusieurs besoins, mais je n'arrive à en réaliser aucun ...

    1) Je souhaite ajouter un bouton (macros) qui aura pour but d'ajouter une colonne "Date d'appelx" à la suite de la dernière colonne "Date d'appelx-1"

    Concernant cette étape, j'ai essayé plusieurs choses (macros, dev VB, ...) rien à faire, j'ai soit des bugs de compilation, soit mes colonnes ne s'ajoutent pas au bon endroit ...

    2) Je souhaite ajouter (un bouton ? une info bulle ? un bouton dans une info bulle ?) une macros qui, une fois la RS (raison sociale) sélectionnée me propose d'ajouter une ligne en dessous (dans le but d'ajouter un contact supplémentaire à l'entreprise) tout en pré-remplissant certaines informations (num saphire, RS, CP, Ville, Effectif, Num standard)

    Ici pareil, j'ai trouver pas mal de formules, d'idées, dans tous les cas une fois les essais en place, ca met pas mal de bordel dans mon tableau ... il n'est donc plus exploitable ...

    3) Dernier point sur lequel je bloque et sur lequel je n'ai trouvé aucun début de solution. Dans l'avant dernière colonne (statut contact) il y a plusieurs choix possibles (Chaud, moyen, froid, mort). Je souhaite envoyer (en fonction de son statut) les lignes entières dans les différentes feuilles du classeur afin de les synthétiser (visuellement et au niveau des chiffres dans un second temps)

    Pour cela je n'ai pas trouver le moindre commencement d'une éventuelle solution

    Voila pour le moment les points bloquants ... je sais il y en a beaucoup ... je vais peut être devoir faire appel à une formation ou à un consultant car ca fait un peu beaucoup de boulot ...

    Merci tout de même par avance pour vos aides et conseils.

    Je reste à votre disposition pour plus de renseignements,

    Carou
    Fichiers attachés Fichiers attachés

  2. #2
    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 729
    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 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je n'ouvre jamais les classeurs joints dès l'ouverture d'une discussion donc je tente de répondre en fonction de ce que tu écris
    1) Je souhaite ajouter un bouton (macros) qui aura pour but d'ajouter une colonne "Date d'appelx" à la suite de la dernière colonne "Date d'appelx-1"
    Je suppose que tu sais dessiner un bouton sur la feuille ?
    Exemple d'une procédure qui ajoute une colonne juste après celle dont l'étiquette est Date. Pour l'exemple la plage commence en cellule A1 de la feuille active, la première ligne contient les étiquettes de colonnes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub AddColumn()
     Dim Pos As Integer, rng As Range
     Set rng = ActiveSheet.Range("A1").CurrentRegion
     With rng
      Pos = Application.Match("Date", .Resize(1), 0)
      .Columns(Pos + 1).Insert
     End With
     Set rng = Nothing
    End Sub
    On peut se passer de la variable Pos bien entendu
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub AddColumn()
     Dim rng As Range
     Set rng = ActiveSheet.Range("A1").CurrentRegion
     With rng
      .Columns(Application.Match("Date", .Resize(1), 0) + 1).Insert
     End With
     Set rng = Nothing
    End Sub
    2) Je souhaite ajouter (un bouton ? une info bulle ? un bouton dans une info bulle ?) une macros qui, une fois la RS (raison sociale) sélectionnée me propose d'ajouter une ligne en dessous (dans le but d'ajouter un contact supplémentaire à l'entreprise) tout en pré-remplissant certaines informations (num saphire, RS, CP, Ville, Effectif, Num standard)
    Pourquoi un bouton ?
    Une procédure événementielle ne serait-elle pas plus adaptée ?

    [EDIT]

    3) Dernier point sur lequel je bloque et sur lequel je n'ai trouvé aucun début de solution. Dans l'avant dernière colonne (statut contact) il y a plusieurs choix possibles (Chaud, moyen, froid, mort). Je souhaite envoyer (en fonction de son statut) les lignes entières dans les différentes feuilles du classeur afin de les synthétiser (visuellement et au niveau des chiffres dans un second temps)
    Solution avec les filtres avancés d'excel (méthode AdvancedFilter de l'objet Range en VBA)

    A lire Les filtres avancés ou élaborés dans Excel

    J'ai apporté une réponse il y a quelques jours sur le même sujet et j'ai donné deux liens de discussions. Voir ma réponse du 19/09
    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

  3. #3
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2015
    Messages : 24
    Points : 2
    Points
    2
    Par défaut Merci
    tout d'abord merci.

    effectivement je sais dessiner un bouton


    j'ai une erreur avec la ligne :

    .Columns(Application.Match("Date", .Resize(1), 0) + 1).Insert

    erreur 13
    incompatibilité de type

    j'ia peut etre un probleme avec "létiquette " ?

  4. #4
    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 729
    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 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    erreur 13
    incompatibilité de type
    Cela signifie que la fonction Match ne trouve pas le texte cherché (ici Date)
    Plusieurs possibilités
    1. Le texte cherché n'est pas dans la lignes des titres
    2. Ta plage ne commence pas en cellule A1 il faut donc adapter la ligne Set rng = ActiveSheet.Range("A1").CurrentRegion
    3. Ta plage n'est pas bien structurée et tu ne respectes pas les règles élémentaires d'une table dans excel
      • Idéalement un tableau commence en cellule A1
      • ligne 1, les titres (étiquettes de colonnes)
      • lignes 2 et suivantes les données
      • toutes les cellules de la première ligne remplies et la première colonne également
      • Pas de cellules fusionnées

    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

  5. #5
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2015
    Messages : 24
    Points : 2
    Points
    2
    Par défaut
    effectivement, mon tableau ne commençait pas en A1, il y avait des cellules fusionnées ...
    J'ai modifié toute cela et ça fonctionne. (MERCI)

    Est il possible de renommer la nouvelle colonne Date2, puis date3 après un nouvel appui, ...

  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 729
    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 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Est il possible de renommer la nouvelle colonne Date2, puis date3 après un nouvel appui, ...
    Absolument, en concaténant le texte ("Date" & Num) où Num est la variable qui doit contenir le numéro
    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
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2015
    Messages : 24
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Absolument, en concaténant le texte ("Date" & Num) où Num est la variable qui doit contenir le numéro
    Euh ... oui ...

    Desolé je ne sais pas faire ...

  8. #8
    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 729
    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 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Essaie déjà dans excel.
    Tu tapes en A1, la valeur 10 et en B1 tu écris cette formule ="Date" & A1.
    Et bien en VBA, c'est le même principe
    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

  9. #9
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2015
    Messages : 24
    Points : 2
    Points
    2
    Par défaut
    J'ai compris le principe
    cependant, je ne vois pas comment l implementer sachant que le nombre va rester fixe (Date) et que je souhaite une incrementation ?

  10. #10
    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 729
    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 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voici une exemple mais qui insère la colonne avant et plus après car sinon je dois changer de méthode et je n'ai pas le temps
    Cela suppose que le tableau commence à A1. Si l'étiquette à chercher n'est pas "Date", il suffit de changer la valeur de la constante LookUpLabel.
    Contrainte le n° doit coller à l'étiquette dans cet exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub AddColumn()
     Const LookUpLabel As String = "Date"
     Dim Pos As Integer, rng As Range, Num As Integer
     Set rng = ActiveSheet.Range("A1").CurrentRegion
     With rng
      Pos = Application.Match(LookUpLabel & "*", .Resize(1), 0)
      .Columns(Pos).Insert
     End With
     Num = Val(Replace(rng(Pos + 1), LookUpLabel, ""))
     rng(Pos) = LookUpLabel & Num + 1
     Set rng = Nothing
    End Sub
    [EDIT]
    Attention, j'ai oublié de préciser qu'il y a une autre contrainte.
    Aucune colonne précédent les colonnes ayant comme étiquette Date & x ne doit commencer par cette même orthographe. Par exemple Date Commande
    Dans ce cas éventuellement nommer les étiquettes _Date1, etc. et donc chercher _Date
    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

  11. #11
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2015
    Messages : 24
    Points : 2
    Points
    2
    Par défaut
    Cela fonctionne bien merci !
    le décalage sur la gauche est moins gênant que ce que je pensais

    en revanche cela recopie la mise en forme de la colonne de gauche qui n'a rien a voir avec les nouvelles créées

    il y a une possibilité de recopie la mise en forme de droite malgres le decalage sur la gauche ?

  12. #12
    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 729
    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 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    en revanche cela recopie la mise en forme de la colonne de gauche qui n'a rien a voir avec les nouvelles créées
    il y a une possibilité de recopie la mise en forme de droite malgres le decalage sur la gauche ?
    Ajouter l'argument CopyOrigin avec comme valeur la constante "xlFormatFromRightOrBelow" à la méthode Insert (ligne 7 du dernier code que j'ai publié)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      .Columns(Pos).Insert CopyOrigin:=xlFormatFromRightOrBelow
    Je n'aime pas le rappeler mais lorsqu'un bénévole passe un certain temps à aider quelqu'un, il est toujours sensible à recevoir la seule rétribution qui ne coûte rien à celui qui pose la question, c'est à dire un vote
    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

  13. #13
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2015
    Messages : 24
    Points : 2
    Points
    2
    Par défaut
    Un grand merci pour le temps passé sur mes questions ...

    je ne connaissais pas le principe des pouces verts ... (ils seront en apposés d'ici quelques secondes )


    Cela fonctionne très bien.
    par contre, du fait de l'ajout potentiellement important de nouvelles colonnes, j'ai voulu "grouper" ces colonnes. et la c'est le drame ! des ajouts sans queue ni tete, a droite a gauche, bref il me reste plus qu'à trouver une autre solution je pense

  14. #14
    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 729
    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 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Cela fonctionne très bien.
    par contre, du fait de l'ajout potentiellement important de nouvelles colonnes, j'ai voulu "grouper" ces colonnes. et la c'est le drame ! des ajouts sans queue ni tete, a droite a gauche, bref il me reste plus qu'à trouver une autre solution je pense
    Grouper, c'est à dire ?
    Le regroupement par la commande Grouper du groupe Plan de l'onglet [Données]

    Merci pour tes votes
    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

  15. #15
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2015
    Messages : 24
    Points : 2
    Points
    2
    Par défaut
    Le regroupement par la commande Grouper du groupe Plan de l'onglet [Données]

    oui c'est bien ca !

Discussions similaires

  1. [XL-2010] Macro tableau croisé dynamique
    Par varik dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/05/2012, 12h11
  2. [XL-2010] assigner macro à tableau
    Par Faradeorn dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/01/2011, 00h44
  3. macro Tableau croisé dynamique
    Par nounouna dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/05/2010, 14h01
  4. [XL-2003] Macro Tableau croisé dynamique
    Par Otmanes dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2009, 18h18
  5. [XL-2007] Macro tableau croisé dynamique
    Par naty76 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/06/2009, 10h35

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