XL pour MAC VBA importation dans feuille

cash01

XLDnaute Junior
Bonjour a toutes et tous

J'ai créer un classeur pour la gestion de mes commandes, mais quand j'envoi mon formulaire dans ma base de données les formules sont copiés, mais je voudrais copier que le résultat.

Je vous ai mis dans le fichiers les annotations pour mieux comprendre mon petit soucis.

merci a vous tous

Guillaume ;)
 

Pièces jointes

  • BASE DE DONNEE.xlsm
    29.6 KB · Affichages: 5

soan

XLDnaute Barbatruc
Inactif
Bonsoir Guillaume, Phil,

ton fichier en retour. :)

* tu es sur la 2ème feuille "Base de données" ; regarde le tableau actuel.

* va sur la 1ère feuille "Formulaire" ; tu peux voir que j'ai déjà saisi des données.

* clique sur le bouton "Envoie base" ; regarde les changements de cette feuille.

* va sur la 2ème feuille "Base de données" ; regarde le tableau. ;)

* regarde aussi la 3ème feuille "Paramètres" : il y a 4 tableaux.



code VBA (14 lignes) :

VB:
Option Explicit

Sub transfert()
  If ActiveSheet.Name <> "Formulaire" Then Exit Sub
  Dim lig&: Application.ScreenUpdating = 0
  With Worksheets("Base de données")
    lig = .Cells(Rows.Count, 1).End(3).Row + 1
    With .Cells(lig, 1).Resize(, 18)
      .Value = WorksheetFunction.Transpose([B5:B22])
      .Borders.LineStyle = 1
    End With
  End With
  [B7:B17] = Empty: [B5] = [B5] + 1: [B7].Select
End Sub



edit : j'avais utilisé .PasteSpecial avec le paramètre Transpose à True ; mais ça laissait toute la ligne copiée sélectionnée ; aussi, j'ai préféré changer pour ce qu'a utilisé Phil : WorksheetFunction.Transpose() ; ça fait la même copie, mais la ligne copiée n'est pas sélectionnée.​

soan
 

Pièces jointes

  • BASE DE DONNEE.xlsm
    34.5 KB · Affichages: 3
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
@Phil69970

quand je fais une copie avec .PasteSpecial sans faire de transposition, ça laisse aussi toute la plage copiée sélectionnée ; est-ce que par hasard tu connais une fonction parmi celles de WorksheetFunction qui ferait une copie sans faire de transposition et sans que la plage copiée soit sélectionnée ? ou en utilisant une autre méthode qu'avec WorksheetFunction ?​

soan
 

Phil69970

XLDnaute Barbatruc
@soan

Non à part :

WorksheetFunction.Transpose
ou
Application.WorksheetFunction.Transpose

Je ne vois rien d'autre ou plus exactement rien d'autre que je connaisse.
Autrement en copiant cellule par cellule ;) mais ce n'est plus une plage.
Et il n'y a pas de transposition.
Sur une quinzaine de cellule on devrait perdre un dixième de seconde !!!!


Pourquoi la 1ere ligne de ton code, car pour appuyer sur le bouton il faut être dans la feuille "Formulaire" il me semble sauf si on passe par le mode pas à pas avec F8 ?
If ActiveSheet.Name <> "Formulaire" Then Exit Sub

@Phil69970
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Phil,

je viens de lire ton post #5 ; merci pour ta réponse. :)

dommage qu'il n'y a pas d'alternative à une copie sans transposition via .PasteSpecial : comme la plage copiée est sélectionnée automatiquement, il faudrait sélectionner une cellule en dehors de cette plage pour désélectionner la sélection en cours, mais ça oblige à aller sur la feuille où on a fait la copie, puis à retourner sur la feuille de départ ; c'est justement cet aller-retour que j'aurais bien voulu pouvoir éviter ! 😜

rappel : c'est impossible de sélectionner la cellule d'une feuille de calcul si on n'est pas sur cette feuille ➯ ça ne peut pas marcher depuis une autre feuille ! 😭 avec [D5].Select ou [D5].Activate : idem ! 😢



If ActiveSheet.Name <> "Formulaire" Then Exit Sub

Pourquoi la 1ère ligne de ton code, car pour appuyer sur le bouton il faut être dans la feuille "Formulaire" il me semble sauf si on passe par le mode pas à pas avec F8 ?

exact, il faut être sur la feuille "Formulaire" pour pouvoir cliquer sur le bouton "Envoie base" ; à part le mode pas à pas avec F8, il y a aussi cette possibilité : l'utilisateur lance la macro via Alt F8 (fenêtre "Macro") ; et ça, il peut le faire depuis n'importe quelle feuille, donc aussi depuis la feuille "Base de données" ou depuis la feuille "Paramètres" ; or ma macro fait le travail adéquat uniquement depuis la feuille "Formulaire" ; ainsi, même si je n'ai pas mis de raccourci clavier pour lancer la macro (comme par exemple Ctrl e), j'ai mis cette 1ère ligne de code en tant que sécurité ; rappel : lancer une macro par un raccourci clavier peut aussi être fait depuis n'importe quelle feuille ; donc c'est comme pour Alt F8.
soan
 

Discussions similaires

Réponses
17
Affichages
899
Réponses
0
Affichages
271