1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

Les derniers dossiers:

Excel : bouton macro ajouter une ligne

Discussion dans 'Bureautique, utilitaires, éducation' créé par kabeha, 27 Mai 2012.

Modérateurs: Aliboron
  1. kabeha

    kabeha Membre d'élite Club MacG

    Messages:
    1 299
    J'aime reçus:
    53
    Score des trophées:
    255
    Meilleures réponses:
    0
    Appareil(s) Apple:
    iMac
    Bonjour,

    Une question pour les pros des macros (office 2011) :

    Je voudrais pour simplifier la saisie dans un tableau insérer en haut de tableau un bouton "ajouter une ligne", sachant que :

    - la ligne doit respecter la mise en forme conditionnelle de la ligne entière du type formule sur la valeur d'une cellule (ça c'est fait : =$F2="NOK" => Données!$A$2:$F$2 s'affiche en rouge)

    - la ligne doit s'ajouter au début du tableau sous la ligne d'en-tête

    Quel format d'enregistrement pour conserver la macro et pour s'en servir sous XP ?

    Merci d'avance
     
  2. Aliboron

    Aliboron Chercheur de son Modérateur Club MacG

    Messages:
    11 319
    J'aime reçus:
    438
    Score des trophées:
    285
    Meilleures réponses:
    11
    Appareil(s) Apple:
    iMac, Mac mini, iPhone
    A priori rien de bien complexe à faire, ce pourrait presque s'obtenir en enregistrant les actions.

    En insérant une ligne, par défaut on conserve la mise en forme, y compris conditionnelle. Ce qui simplifie ce point. Il suffit donc d'insérer une ligne avant la lige 2 et d'en supprimer le contenu. Tu devrais donc obtenir le résultat attendu en affectant la macro suivante à ton bouton :

    Code (Text):
    1. Sub InsertionLigne()
    2. ActiveSheet.Rows("2:2").Copy
    3. ActiveSheet.Rows("2:2").Insert Shift:=xlDown
    4. ActiveSheet.Rows("2:2").ClearContents
    5. Range("A2").Select
    6. End Sub
    7.  
    A priori, c'est assez basique pour que ça fonctionne à l'identique dans une version Windows.
     
  3. kabeha

    kabeha Membre d'élite Club MacG

    Messages:
    1 299
    J'aime reçus:
    53
    Score des trophées:
    255
    Meilleures réponses:
    0
    Appareil(s) Apple:
    iMac
    Merci,

    Mais où se trouvent ces "Boîte à outils Contrôles" ou "Affichage > Barre d'outils > Formulaires" pour créer le bouton ?
     
  4. Aliboron

    Aliboron Chercheur de son Modérateur Club MacG

    Messages:
    11 319
    J'aime reçus:
    438
    Score des trophées:
    285
    Meilleures réponses:
    11
    Appareil(s) Apple:
    iMac, Mac mini, iPhone
    Ah, ça a un peu changé avec Excel 2011 : ça se trouve dans l'onglet "Développeur" du ruban. On active l'affichage de cet onglet dans les préférences d'Excel, onglet "Ruban".
     
  5. kabeha

    kabeha Membre d'élite Club MacG

    Messages:
    1 299
    J'aime reçus:
    53
    Score des trophées:
    255
    Meilleures réponses:
    0
    Appareil(s) Apple:
    iMac
    :up::zen::zen:

    Cela marche impecc, par contre pour l'enregistrement, il faut que j'indique un format compatible avec les macros, j'ai choisi .xlms

    Un grand merci
     
    Aliboron aime ça.
  6. kabeha

    kabeha Membre d'élite Club MacG

    Messages:
    1 299
    J'aime reçus:
    53
    Score des trophées:
    255
    Meilleures réponses:
    0
    Appareil(s) Apple:
    iMac
    Je rencontre un nouveau problème lié à cette macro :

    J'ai créé une nouvelle feuille 'Synthèse' dans laquelle j'ai plusieurs colonnes pour compter les occurences par mois de tel ou tel type de ma première feuille 'Données', avec des formules de type

    =SOMMEPROD((MOIS(Données!$B$3:$B$9999)=MOIS(A2))*(ANNEE(Données!$B$3:$B$9999)=ANNEE(A2))*(Données!$I$3:$I$9999="En cours"))

    Cela fonctionne très bien, mais chaque fois que j'ajoute une ligne via le bouton macro dans la feuille 'Données', cela modifie la plage de mes formules dans la feuille 'Synthèse' en les décalant d'autant de lignes ajoutées, et cela malgré les $.

    2 lignes ajoutées > =SOMMEPROD((MOIS(Données!$B$5:$B$10001)=MOIS(A2))*(ANNEE(Données!$B$5:$B$10001)=ANNEE(A2))*(Données!$I$5:$I$10001="En cours"))

    Ce qui a pour effet que les lignes ajoutées dans la feuille 'Données' et qui ont les numéros 3 et 4 ne sont prises en compte.

    J'ai testé sur Office mac 2011 et Office pc 2010 : idem

    Que dois-je faire pour résoudre ce problème ?
     
  7. Aliboron

    Aliboron Chercheur de son Modérateur Club MacG

    Messages:
    11 319
    J'aime reçus:
    438
    Score des trophées:
    285
    Meilleures réponses:
    11
    Appareil(s) Apple:
    iMac, Mac mini, iPhone
    Normal, les formules dans une feuille s'adaptent. Il faut passer par une macro ou par la fonction "Indirect()", par exemple.

    Dans ton cas, je te propose de passer par des plages nommées de taille variable. En utilisant les noms pour désigner les plages, tu peux contourner le problème : tu vas dans le menu "Insertion" > "Nom" > "Définir…" et tu crées une plage nommée "MonMois" faisant référence à "=DECALER(Données!$A$3;1;0;NBVAL(Données!$A:$A)-3)". Cette plage s'adaptera au nombre de cellules contenant des données dans la colonne A:A. Autrement dit, la plage "MonMois" fera référence à la plage allant de la cellule A3 jusqu'à la dernière cellule de la colonne. Même chose pour les colonnes B:B et I:I (tu crées des plages nommées "MonAnnee" et "MonEtat").

    Ensuite, tu utilises ces noms dans tes formules, par exemple :
    =SOMMEPROD((MOIS(MonMois)=MOIS(A2))*(ANNEE(MonAnnee)=ANNEE(A2))*(MonEtat="En cours"))
     
  8. kabeha

    kabeha Membre d'élite Club MacG

    Messages:
    1 299
    J'aime reçus:
    53
    Score des trophées:
    255
    Meilleures réponses:
    0
    Appareil(s) Apple:
    iMac
    :zen::zen::zen:
    :up::)
    Merci de m'avoir fait découvrir cette fonction, j'ai juste du ajuster les arguments, même si je n'ai pas vraiment compris toutes les subtilités.

    =DECALER(Données!$B$2;1;0;NBVAL(Données!$B:$B)-1)

    Enfin, ça marche bien, j'ai ajouté des lignes avec différents mois, nickel.

    Excel est toujours une source d'épatement
     
    Aliboron aime ça.
  9. kabeha

    kabeha Membre d'élite Club MacG

    Messages:
    1 299
    J'aime reçus:
    53
    Score des trophées:
    255
    Meilleures réponses:
    0
    Appareil(s) Apple:
    iMac
    Bonjour,
    Je me permets de remonter ce fil ouvert par moi-même, car je rencontre une nouvelle difficulté avec une insertion de ligne :
    Un classeur avec 3 feuilles
    feuille 1 : données
    feuille 2 : données + calculs qui utilisent des résultats de la feuille 3
    feuille 3 : calculs qui utilisent données des feuilles 1 et 2 (afin de découper et simplifier les formules de la feuille 2)
    Quand j'utilise une macro de type
    "Sub NouvelleLigne()

    Sheets("feuille2").Range("A65536").End(xlUp).EntireRow.Copy Sheets("feuille2").Range("A65536").End(xlUp).Offset(1, 0)
    Sheets("feuille2").Range("A65536").End(xlUp).EntireRow.SpecialCells(xlConstants).ClearContents

    End Sub"

    Cela me crée des erreurs dans les cellules de la feuille3 qui font références aux cellules de la feuille2, je me retrouve avec des #HREF à la place des adresses dans mes formules, ce qui m'affiche #HREF dans les cellules, ainsi que dans celles qui y font référence.
     
Modérateurs: Aliboron

Partager cette page

iOccasion - Achetez un produit Apple d'occasion

Les derniers deals sur Ebay