Microsoft 365 VBA - rajout d'1 ligne automatique avec la formule et les validations de données (liste déroulante)

blancolie

XLDnaute Impliqué
Bonsoir le forum,

je vous présente ce fichier et quelqu'un de ce forum m' a apporté la solution mais cela ne marche pas dans mon fichier peut a cause que je suis sous mac et version d'office 365, peut être la cause.

alors pour ceux qui sont sur mac et ceux aussi sur pc car office 365 fonctionne sur pc

Mon but est de rajouter une deuxième ligne quand la cellule A3 est remplie. il faut bien sur que dans la nouvelle ligne, les formules et les listes déroulantes apparaissent aussi.

je n'y connais rien du tout en vba.

Cordialement
 

Pièces jointes

  • fleurissement 2.xlsm
    46.9 KB · Affichages: 22
Dernière édition:
Solution
Avant de vous quitter voici dans ce fichier (3) une macro qui évite qu'on efface les formules :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim colf, ub%, tablo, i&, j%
colf = Array(2, 4, 5, 7) 'colonnes des formules, à adapter
ub = UBound(colf)
With [Tableau1]
    If Not Intersect(Target, .Cells) Is Nothing Then
        Set Target = Intersect(Target.EntireRow, .Cells)
        For Each Target In Target.Areas
            tablo = Target.Formula 'matrice, plus rapide
            For i = 1 To UBound(tablo)
                For j = 0 To ub
                    If Left(tablo(i, colf(j)), 1) <> "=" Then
                        MsgBox "Ne pas effacer les formules !", vbCritical
                        Application.EnableEvents = False...

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir @blancolie , le Forum

Par aquis de conscience, je viens de tester ton fichier sur PC Win 8.1 Pro, Office 2013 Pro Plus, et il semble faire ce qui est demandé sans rien toucher au niveau code, paramétrage.

List_Validation.gif


Donc ca viendrait bien des version Mac + Office 365... (Que je n'ai pas)

Bien à toi, à vous
@+Thierry
 

job75

XLDnaute Barbatruc
Bonjour blancolie, _Thierry, le forum,
merci, y a t il pas une autre façon d y arriver ?
Testez cette macro :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim R As Range
With ListObjects(1).Range
    Set R = .Rows(.Rows.Count + 1).Cells
    If Not Intersect(ActiveCell, R) Is Nothing And R(0, 1) <> "" Then
        .ListObject.Resize Range(.Cells, R) 'redimensionnement
        R(1).Select
    End If
End With
End Sub
Bonne journée.
 

Pièces jointes

  • fleurissement(1).xlsm
    51.2 KB · Affichages: 10

blancolie

XLDnaute Impliqué
bonjour job , c'est vraiment office 365 le problème, j'ai installé office 2019 et cela fonctionne.

existe t il une macro de façon automatique qui va copie ce qu'on va rentrer dans zone de saisie dans les autres onglets et une fois copié, on peut effacer ce qu'on a rentré ds zone de saisie sans affeceter les autres onglets ?
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @blancolie , @job75, le Forum

Tant mieux que tu aies pu télécharger Office 2019 on Premises, donc le 365 Cloud fait des misères... C'est bon à savoir !

Un essai en respectant la dernière demande du post #6
Pour le moment je ne m'occupe pas des Prix HT dans les onglets Fournisseurs, vu qu'ils ne sont pas indiqués dans la Zone de Saisie...

Bien à toi, à vous
@+Thierry
 

Pièces jointes

  • XLD_Blancolie_fleurissement 2_v00.xlsm
    54.8 KB · Affichages: 11

job75

XLDnaute Barbatruc
Le problème du post #1 n'est pas réglé, testez maintenant ceci avec Office 365 :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With [Tableau1]
    With .Rows(.Rows.Count + 1)
        If Not Intersect(ActiveCell, .Cells) Is Nothing And .Cells(0, 1) <> "" Then
            .Rows(0).Copy .Cells(1)
            .SpecialCells(xlCellTypeConstants).ClearContents
            .Cells(1).Select
        End If
    End With
End With
End Sub
 

Pièces jointes

  • fleurissement(2).xlsm
    51.5 KB · Affichages: 15

blancolie

XLDnaute Impliqué
Bonjour Job, j'ai reinstalle ofice365 pour tester ton travail, cette fois-ci cela marche. qu'elle était le problème ?

si je veux recopier ton code pour les autres onglets, j'ai juste à changer le nom du tableau ?

J'ai essaye de le changer pour l'onglet devis Fanfelle, cela marche mais j'ai une boite de dialogue qui apparait "erreur d'éxecution N°1004 - Pas de cellule correspondante. et quand je fais déboguer cela m'indique en surbrillance .SpecialCells(xlCellTypeConstants).ClearContents

dans l'onglet devis Fanfelle , j'ai mis cette formule suivante :

Code:
SIERREUR(INDEX(Tableau1[Massif/Equipe];EQUIV("Fanfelle";Tableau1[Fournisseur];0));"")

Ce que je veux voir apparaitre dans la nouvelle ligne le résultat correspondant Petit-bois ( Bonne Aventure au lieu de la même réponse que dans celle de la première ligne et je pense que c'est peut dans le code Vba qu'il faut peut-être rajouter quelque chose.

C'est un tableau structuré donc logiquement je devrais pas avoir a utiliser la fonction décaler.

Merci à toi
 

Pièces jointes

  • fleurissement(2).xlsm
    51.9 KB · Affichages: 6
Dernière édition:

blancolie

XLDnaute Impliqué
ah desolé thierry et job , cela n 'etait pas le but du tout. J'essaye juste d adapter la solution de job75 a un autre onglet mais je rencontre des problèmes d adaptation. Ne connaissant pas le vba .

Pour mes autres questions, oui faut que je crée un autre post et que je synthétise ma demande.
 

blancolie

XLDnaute Impliqué
Pas mal ce travail Thierry,

j'y comprends rien a ce langage vba.

Pas mal ce travail effectivement, cela correspond bien à ma demande.

Ma question, est ce facilement adaptable si je veux créer d'autres onglets ? car en voulant adapter le codage de job, je rencontre un soucis.

ton travail est tres bien pour dispatcher les plantes par secteur, mais je vois que pour faire les demandes de devis (fanfelle,chombart, ververt etc) comme les équipes ont peuvent entres elles utiliser les mêmes plantes, cela arrive. donc derrière il faudra faire un travail de tri uniquement pour les demandes de devis.

Pour les demandes de prix, faut que je reprends mon travail et que je regarde si les plantes sont dans mon BPU ( Bordereau de prix unitaire) ou prix catalogue et (peut-être remise sur catalogue ou hors marché).quand tout cela sera rentré dans mon BDD technique, on pourra s'en occuper.

c'est vrai que j'aurais du peut-être mieux construire ce poste et mieux synthétiser mon objectif mais comme je dois rentrer les demandes des bisannuelles et les demandes de devis pour les fournisseurs, je veux avoir un outil et je vais trop vite et jem'éparpille.

Je suppose question bête que tu as appris le codage vba par toi-même, il y a des tutos (surement que oui) ou on arrive a bien comprendre toutes les fonctions et leurs assemblages ?

merci pour tout thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Re Bonsoir

Ah tu as pu le voir finalement :)

Ma question, est ce facilement adaptable si je veux créer d'autres onglets ? car en voulant adapter le codage de job, je rencontre un soucis.

Il n'y a pas de souci pour ca, j'ai volontairement ajouté un fournisseur "Thierry" dans mon fichier exemple si tu as remarqué... Il a été pris sans problème et sans modification du code.

Pour VBA je suis 100% autodidacte en effet, des années de galères, de recherches et de nuits blanches sur le net même avant que Google n'existe (Altavista, Yahoo)... Pour les Tutos si tu parles anglais il y en a pas mal, perso celui qui ma beaucoup appris c'est Chip Pearson http://www.cpearson.com/Excel/Topic.aspx

Bon courage et persévérance !
@+Thierry
 

Discussions similaires

Réponses
2
Affichages
553

Statistiques des forums

Discussions
311 715
Messages
2 081 822
Membres
101 822
dernier inscrit
holale