Copier / Coller valeur / Transposer / Sans cellule vide

Bonjour à tous, tout fraichement arrivé sur le forum et débutant en VBA, (ce sont mes premières macros), je sollicite votre aide pour résoudre mon problème qui est le suivant :

J'ai dans une première feuille nommé : "TBL B" pour tableau de bord des données qui seront rentrés par l'utilisateur.

C'est données sont ensuite envoyés dans une autre feuille nommé "Data" via une macro déclenché par un bouton enregistrer. C'est justement cette macro en question qui me pose problème.

La macro doit en premier lieu se rendre dans la feuille data pour inséré une nouvelle ligne à partir de la 3ème.

Ensuite retourner dans la feuille TBL B, copier la colonne C (excepté la cellule C14).

Retourner dans le data et coller les données dans la nouvelle ligne créé, sans mise en forme (soit coller valeur) tout en les transposant et sans copié les cellule vide ni la cellule C14.

J'arrive à le faire en enregistrement la macro mais forcément le code est long et la macro rame même si elle marche. Je voudrais donc savoir si il est possible (et je suis presque sur que oui) d’alléger ma macro.

Voici le code :

Sub Enregistrer()

Range("C4").Select

Selection.Copy

Application.CutCopyMode = False

Sheets("Data").Select

Rows("3:3").Select

Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

Sheets("TBL B").Select

Range("C4").Select

Selection.Copy

Sheets("Data").Select

Range("A3").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Sheets("TBL B").Select

Range("C6").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Data").Select

Range("B3").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Sheets("TBL B").Select

Range("C8").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Data").Select

Range("C3").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Sheets("TBL B").Select

Range("C10").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Data").Select

Range("D3").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Sheets("TBL B").Select

Range("C12").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Data").Select

Range("E3").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Sheets("TBL B").Select

Range("C16").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Data").Select

Range("F3").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Sheets("TBL B").Select

Range("C18").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Data").Select

Range("G3").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Sheets("TBL B").Select

ActiveWindow.SmallScroll Down:=13

Range("C22").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Data").Select

Range("H3").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Sheets("TBL B").Select

Range("C24").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Data").Select

Range("I3").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Sheets("TBL B").Select

Range("C28").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Data").Select

Range("J3").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Sheets("TBL B").Select

Range("C30").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Data").Select

Range("K3").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Range("M3").Select

Application.CutCopyMode = False

ActiveCell.FormulaR1C1 = "=MONTH(RC[-11])"

Range("K:K,I:I").Select

Range("I1").Activate

ActiveWindow.ScrollColumn = 1

Range("K:K,I:I,C:C,B:B").Select

Range("B1").Activate

Selection.NumberFormat = "m/d/yyyy"

Cells.Select

Sheets("TBL B").Select

Range("C4").Select

End Sub

Je vous remercie d'avance

Bonjour,

à tester,

Sub Enregistrer()
'excepter la cellule C14
Sheets("Data").Rows("3:3").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
LastRow = Sheets("TBL B").Cells(Rows.Count, 3).End(xlUp).Row

For i = 4 To LastRow
 If Sheets("TBL B").Range("C" & i) <> 0 And i <> 14 Then
   n = n + 1
   Sheets("Data").Cells(3, n).Value = Sheets("TBL B").Cells(i, "C").Value
 End If
Next

End Sub

Bonjour sabV et merci beaucoup elle marche nickel

Merci pour ce retour, au plaisir!

pour clôturer le fil, cliquer sur le bouton V vert du post à coté du bouton EDITER, merci!

J'ai un deuxième problème mais pas par rapport au macro cette fois ...

Dans le même tableur, une fois les données enregistrer en Data, elles sont triées par mois dans une feuille nommé : C ds pour classement de données.

Ensuite il y a une feuille par mois qui va directement chercher les données, sauf que je pensais que tout marchais très bien mais mystère j'obtiens une erreur car il y a une date identique mais sur un autre véhicule.

Il s'agit d'un planning automatique d'utilisation de véhicules et de conducteurs.

Les plages nommés sont les suivantes :

BC_JAN : $C$1 : $C$1000

COND1_JAN : $F$1 : $F$1000

COND2_JAN : $J$1 : $J$1000

COND3_JAN : $L$1 : $L$1000

DATDIF1_JAN : $K$1 : $K$1000

DATDIF2_JAN : $M$1 : $M$1000

Le but de la formule est de renvoyer le choix du conducteur sauf qu'il est possible que l'utilisateur est sélectionné deux choix de conducteur différents à des dates différentes.

Je m'explique, l'utilisateur rentre l'utilisation d'un véhicule du 01/01/17 au 15/01/17 avec un choix d'un seul conducteur. Il ajoute également que le 01/01/17 uniquement il y aura deux conducteur. Étant placé le 01/01/17, nous devons donc avoir comme résultat deux conducteurs.

Ce qui nous donne pour la formule

=SI(C7="";"";SI(INDEX(DATDIF2_JAN;EQUIV(C7;BC_JAN))=C$5;INDEX(COND3_JAN;EQUIV(C7;BC_JAN));SI(INDEX(DATDIF1_JAN;EQUIV(C7;BC_JAN))=C$5;INDEX(COND2_JAN;EQUIV(C7;BC_JAN));INDEX(COND1_JAN;EQUIV(C7;BC_JAN)))))

J'ai beau chercher je n'arrive pas à comprendre pourquoi il me renvois erreur. Si je supprime la ligne avec l'utilisation du véhicule 55.1 l'erreur n'apparaît plus...

De plus lorsque je fait F9 sur la formule : INDEX(COND1_JAN;EQUIV(C7;BC_JAN)) j'obtiens N/A alors que je devrais obtenir 2 Cond Jour


C'est noté, doit je recréer un topic pour mon deuxième problème ?

Bonjour,

C'est noté, doit je recréer un topic pour mon deuxième problème ?

oui, vous auriez plus de chance d'avoir une réponse sur un nouveau un topic, car il y aura plus de personnes à lire votre problème,

ps/ pour une question comme ça, il faudrait joindre un fichier.

Rechercher des sujets similaires à "copier coller valeur transposer vide"