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 :

Débuts en macro : solution partiellement trouvée [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable magasin (commerce)
    Inscrit en
    Novembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable magasin (commerce)
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2018
    Messages : 7
    Par défaut Débuts en macro : solution partiellement trouvée
    Bonjour à tous et à toutes,

    Désolé de mon intervention très novice comparée au niveau global des gens ici, je ne suis pas du tout utilisateur régulier des macros dans Excel car aucune nécessité si ce n'est juste de façon sporadique et je me retrouve confronté justement à utiliser une macro pour mon tableau car aucun autre choix possible.

    Un grand merci à Mr. Boisgontier Jacques car en cherchant sur de multiples forums, j'ai finis par trouver ce qui semble être la solution à mon problème et qui a été posté par ce Mr. (apparemment très qualifié), mais je n'arrive pas à comprendre comment ça fonctionne... j'ai essayé mais après 2 après-midi entières je sèche...

    Le problème va paraître simple pour bon nombre d'entre vous, c'est un casse-tête pour moi... je m'explique :

    - Je travaille dans une boutique, j'ai un tableau EXCEL pour imprimer mes étiquettes prix avec une police de caractère bien sûr, le titre de chaque article en gras, souligné et le prix en gras.

    - Dans le même classeur, constitué de plusieurs "feuilles", j'ai une feuille (nommée : Données Étiquettes) avec dans la colonne A des chiffres allant de 1 à 300 environ. Dans la colonne B j'ai donc l'étiquette de chaque article. Par ex en A1 j'ai donc le chiffre 1, en B1 j'ai une étiquette, en A2 le chiffre 2 et B2 une autre étiquette... etc.

    - Dans une autre feuille, j'ai donc une zone d'impression définit sur 16 cellules englobant les cellules E1:E4 à H1:H4, toutes au bon format pour entrer dans une feuille A4, bref, le but étant de marquer un chiffre en A1 par ex et d'obtenir dans E1 l'étiquette correspondante à ce chiffre en se référant à la colonne B de la 1ère feuille (Données Étiquettes).

    - De cette manière, lorsque j'ai quelques étiquettes prix à imprimer, je vais chercher les chiffres correspondant et j'ai juste à les inscrire, les étiquettes s'affichent de façon auto et j'imprime, plus simple, plus rapide, moins c..ant !

    - RechercheV : ça marche, mais pas pour la mise en forme... et il me la faut ! Du coup j'ai cherché sur le net, pas moyen sans macro à ce que je vois. Ma recherche m'amène sur une réponse de M. Boisgontier qui donne un lien de téléchargement d'un tableau Excel tout simple servant d'exemple de solution j'imagine et il est magique (pour moi du moins)

    - Le tableau de ce Mr. est en PJ (RecherchevPresentation.xls) : on voit bien qu'avec cette formule miraculeuse la colonne B de la feuille "Descriptif lot" s'incrémente des données de la feuille "BD" en fonction de ce qu'on inscrit dans la colonne A, de façon automatique et en respectant la mise en forme, c'est juste parfaitement ce que je veux !

    - Mais le hic : je lis bien la macro dans la zone de texte, mais lorsque je clic sur Afficher les macros = c'est vide !! Comment ? Pourquoi ? Comment ça peut marcher ??

    - Peu importe, je copie la zone de texte, que j'essaie de comprendre, pour créer la même macro dans mon tableau. J'ai sélectionné les colonnes A et B dans ma feuille "Données Étiquettes" pour y inscrire "données" dans la zone nom, je renomme "BD" par "Données Étiquettes" dans la formule macro, je remplace [A3:A10] par [A1:A10000] également.

    - Lorsque je sauvegarde, j'ai systématiquement un message d'erreur :

    Les fonctionnalités suivantes ne peuvent pas être enregistrées dans des classeurs sans macro :

    * Projet VB

    Pour enregistrer un fichier avec ces fonctionnalités, cliquez sur Non, puis sélectionnez un type de fichier prenant en charge les macros dans la liste Type de fichier.

    Pour continuer à enregistrer en tant que classeur sans macro, cliquez sur Oui.
    - J'ai testé plein de choses mais... je n'y arrive pas... impossible non seulement de comprendre cette formule (c'est un peu du chinois pour moi), mais aussi de la faire fonctionner pour moi. En même temps je sais qu'il est difficile de faire fonctionner quelque chose qu'on comprend pas...

    Je poste donc en PJ le tableau de Mr. Boisgontier ainsi que le mien, dans mon classeur les 2 seules feuilles intéressantes sont : "Données Étiquettes" et "Étiquettes" (le reste n'est pas concerné). J'ai laissé pour le moment les formules Recherchev à la place...

    Je viens demander de l'aide car passer des heures sans solution ça devient énervant et j'avoue perdre patience pour le coup.

    RecherchevPresentation.xls BAR & VITRINE.xlsx

    Désolé pour la longueur du message...

    MamylaPuce

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonsoir Mamy la Puce, la forum
    Il faut d'abord activer les macros dans ta version excel à travers ce chemin
    Fichier / Option / centre de gestion de la confidentialité / paramètre centre de gestion de la confidentialité / paramètre Macros / cocher la 4ème : activer toutes les macros
    enregistrer et quitter
    comme ça votre Excel va lire et enregistre les feuilles avec macro
    et puis en verra la suite
    NB : Tu peux accéder au macro via Alt + F11

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,
    Citation Envoyé par Mamy la Puce Voir le message

    Les fonctionnalités suivantes ne peuvent pas être enregistrées dans des classeurs sans macro :

    * Projet VB

    Pour enregistrer un fichier avec ces fonctionnalités, cliquez sur Non, puis sélectionnez un type de fichier prenant en charge les macros dans la liste Type de fichier.

    Pour continuer à enregistrer en tant que classeur sans macro, cliquez sur Oui.
    Tu dois sauvegarder ton classeur au format xlsm et non xlsx, quand Excel te pose cette question clique sur Non et change le format, sinon tu perds toutes tes macros

  4. #4
    Membre éprouvé
    Homme Profil pro
    Comptable
    Inscrit en
    Novembre 2018
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Novembre 2018
    Messages : 100
    Par défaut
    Bonjour Mamy la Puce,

    J'ai regardé votre message (un peu long mais on sens que vous y avez passer du temps) et vos deux fichiers.

    Tout d'abord pour gérer les macros, les fichiers Excel doivent avoir des formats spécifiques depuis la version 2010. Le fichier que vous avez trouver est sous un format (xls) antérieur à ces versions.
    Dans votre cas vous avez deux choix soit enregistrer votre classeur dans ce format sois utiliser le format xlsm (fichier prenant en charge les macros). Mais pas de format xlsx.

    Deuxièmement, la macro est une procédure événementielle qui est attaché à la feuille Étiquette dans votre cas. C'est normal que vous n'y avez pas accès directement par l'interface de macro.
    Pour pouvoir y accéder faite Alt+F11 ou par l'onglet développeur en cliquent sur le bouton Visual Basic.

    Une fois l'interface ouvert, sur la droite en haut de votre écran vous devriez voir les différentes feuilles de votre classeur. Double cliquer sur le feuille Étiquette et la macro s'affichera.

    Enfin, j'ai réglé votre code et reprenant la feuille étiquette comme vous l'avez joint et j'ai compléter la zone de texte afin de vous éclairez sur le code en lui même afin d’effectuer les éventuelles modifications
    Il n'y a plus qu'a testé !!!

    (A titre d'information, la zone de texte n'est pas indispensable pour faire fonctionner le fichier, supprimez là si

    Version antérieur à 2010
    Pièce jointe 430622

    Version aujourd'hui
    Pièce jointe 430624

    En espérant avoir répondu à vos besoins.

    A+

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Responsable magasin (commerce)
    Inscrit en
    Novembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable magasin (commerce)
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2018
    Messages : 7
    Par défaut
    Bonjour,

    Alors je suis bien allé dans Option pour activer toutes les Macros, j'ai bien enregistré le fichier au format xlsm. En revanche, je n'ai pas d'onglet "Développeur" et donc je ne trouve pas de bouton Virtual Basic... ou alors j'ai pas trouvé...

    Il me semblait qu'on pouvait voir et avoir accès à toutes les macros quand on clic sur "afficher les macros" de l'onglet Affichage, il y a possibilité de visualiser toutes les macros même rattachées à d'autres classeurs vu qu'on nous propose le choix.

    De même, les fichiers que vous avez mit en PJ ne sont pas lisibles pour moi, est-ce normal ? Merci en tout cas de votre rapidité à tous ^^

  6. #6
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    ALT+F11

    Afficher l'onglet Développeur dans votre application Office
    Cliquez sur l'onglet Fichier.
    Cliquez sur Options.
    Cliquez sur Personnaliser le ruban.
    Sous Personnaliser le ruban et Onglets principaux, activez la case à cocher Développeur.

  7. #7
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Citation Envoyé par Mamy la Puce Voir le message
    En revanche, je n'ai pas d'onglet "Développeur" et donc je ne trouve pas de bouton Virtual Basic... ou alors j'ai pas trouvé...
    Pour faire apparaitre le menu developpeur qui de base est masqué, il faut aller dans fichier->option->personnaliser le ruban-> cocher l'onglet développeur

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Responsable magasin (commerce)
    Inscrit en
    Novembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable magasin (commerce)
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2018
    Messages : 7
    Par défaut
    Très bien, onglet développeur débloqué, merci, j'ai donc cliqué sur VB et j'y ai implanté le code suivant (modifié pour mon tableau) :

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Target.Column = 1 And Target.Count = 1 Then
          p = Application.Match(Target, Application.Index([données], , 1), 0)
          If Not IsError(p) Then
            Sheets("Données Étiquettes").Range("données").Cells(p, 2).Copy Target.Offset(, 1)
          End If
      End If
    End Sub
    Private Sub Worksheet_Activate()
      Application.ScreenUpdating = False
      For Each c In [A1:A10000]
        p = Application.Match(c, Application.Index([données], , 1), 0)
        If Not IsError(p) Then
          Sheets("Données Étiquettes").Range("données").Cells(p, 2).Copy c.Offset(, 1)
        End If
      Next c
      Application.ScreenUpdating = True
    End Sub
    Et ça marche en partie !! C'est déjà super ^^ Mais seullement voilà, je voudrais comme correspondance entre la donnée chiffrée que j'inscris et l'incrément de la cellule correspondante :

    A1 => E1 (et donc A2 => E2... etc jusqu'à A4)
    B1 => F1 (et ainsi de suite, jusqu'à la ligne 4)
    C1 => G1 (pareil)
    D1 => H1 (tjrs pareil)

    Mais un grand pas en avant déjà ^^

    [EDIT] actuellement c'est la cellule B qui s'incrémente par rapport à A...

  9. #9
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonsoir
    essayez les modification dans le boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Not IsError(p) Then
            Sheets("Données Étiquettes").Range("données").Cells(p, 2).Copy Target.Offset(, 1)
           Sheets("Données Étiquettes").Range("données").Cells(p, 3).Copy Target.Offset(, 2) ' qq chose comme ça
          End If

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Macro, importer partiellement un fichier csv
    Par ben1994 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/05/2017, 10h11
  2. Réponses: 30
    Dernier message: 19/03/2016, 09h50
  3. [AC-2007] anciennes macros 2003 non trouvés en 2007
    Par alexane dans le forum IHM
    Réponses: 2
    Dernier message: 06/10/2010, 13h35
  4. Macro fonctionnant partiellement, votre aide est la bienvenue !
    Par MagalieATF dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 18/06/2009, 11h58

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