VBA Instruction : Application.CutCopyMode

Bonjour,
Désolé, je reviens encore vers vous. La macro ci-dessous fonctionne bien, mais elle copie les formules, auriez-vous une suggestion afin de ne lui faire copier que les valeurs?

D’avance merci

Sub formulaire()
Sheets(« saisie_ordre »).Activate 'n’est pas obligatoire
Range(« B3:B18 »).Copy
Sheets(« HISTORIQUE_ORDRE »).Select
Range(« A2 »).Select

While ActiveCell <> «  »
ActiveCell.Offset(1, 0).Select
Wend

ActiveCell.PasteSpecial xlPasteAll, Transpose:=True
Application.CutCopyMode = False
Sheets(« saisie_ordre »).Range(« B5 »).ClearContents
Sheets(« saisie_ordre »).Range(« B9 »).ClearContents
Sheets(« saisie_ordre »).Range(« B13:B17 »).ClearContents
Sheets(« saisie_ordre »).Range(« B3 »).Value = Sheets(« saisie_ordre »).Range(« B3 »).Value + 1

End Sub

Bonjour
Change cette ligne de code :

ActiveCell.PasteSpecial xlPasteAll, Transpose:=True

Par :

Range(« A » & Activecell.Row , « A » & Activecell.row+15).Value = Sheets(« saisie_ordre »).Range(« B3:B18 »).Value

Je pense que cela devrait le faire

Essaies et dis moi

Bonjour

Au lieu de mettre

ActiveCell.PasteSpecial xlPasteAll, Transpose:=True

mettre

ActiveCell.PasteSpecial.Paste:=xlPasteValues, Transpose:=True

Bonjour,
Merci pour votre proposition. Je viens de modifier ma Macro, il y a un message d’erreur
Erreur de compilation
Attendu: Expression
Avez vous une idée ? D’avance merci

Bonjour FIFO,
Merci pour ton aide.

Je viens de changer la ligne de code par votre proposition, mais j’ai un message d’erreur
Erreur de compilation
Attendu: Séparateur de liste ou )

L’instruction que vous m’avez préconisé ne fonctionne pas

L’instruction que vous m’avez préconisé ne fonctionne pas.

As tu réalisé un copier/coller de la ligne de code que je t ai proposé ?
Si c’est le cas il faut impérativement ressaisir les guillemets au clavier en les accolant à leur donnée sans aucun espace avec sinon on obtient ce genre d’anomalie
Regardes et dis moi

Bonsoir FFO

Bizzare quand même qu’une personne qui donne autant de code VBA comme toi, ne place pas des codes à copier/coller sans modification ??

Tu as raison
Mais ce forum pour certain caractères nous joue des tours ne les restituant pas à l identique les guillemets en sont un exemple
Il faudrait que je réalise une image d une page VBA pour contourner cette anomalie
Pas simple surtout que je communique souvent avec ma tablette donc cette option ne m’est pas disponible
Donc je bricole avec ce type d’information faute de mieux
Désolé de perturber les lecteurs

Re bonjour,

Je viens de refaire le test et corriger les guillemets et espace.
En fait la macro copie bien les données mais elle les colle dans la colonne A de feuillet cible Sheets(« HISTORIQUE_ORDRE »).

Avec le choix de cet icône, aucun problème
image

Dans quel onglet doit être copié les données ?

Pour cela il suffit de rajouter le nom de l’onglet en début de la ligne de code comme ceci :

Sheets(« nom de l’onglet »).Range(« A » & Activecell.Row , « A » & Activecell.row+15).Value = Sheets(« saisie_ordre »).Range(« B3:B18 »).Value

Et biensure attention à la saisie des guillemets

Essaies en adaptant « nom de l’onglet »

Et oui mais quid des lignes que je récupère en copier/coller sur le message de l interlocuteur ?
Ce fut le cas sur cet échange

Je viens de refaire le test. La macro colle toutes données dans la colones A (de haut en bas) alors qu’initialement nous devons les coller en ligne (de gouche à droite)
Sinon c’est bien les données qui sont copier

Je suis très surpris de la destination des données autant par son onglet que par leur disposition au regard de tes lignes de code fournies :

Sheets(« HISTORIQUE_ORDRE »).Select
Range(« A2 »).Select

While ActiveCell <> « »
ActiveCell.Offset(1, 0).Select
Wend

ActiveCell.PasteSpecial xlPasteAll, Transpose:=True

Celles-ci les recopient onglet :

Sheets(« HISTORIQUE_ORDRE »).Select

Et colonne « A » ligne par ligne non colonne par colonne

ActiveCell.PasteSpecial xlPasteAll, Transpose:=True

Sachant que la ligne de code de copie intiale est :

Range(« B3:B18 »).Copÿ

Colonne « B » ligne par ligne de la ligne 3 à la ligne 18

D’où ma proposition dans le même esprit

Pour les recopier sur une ligne sur plusieurs colonnes il faudra mettre la ligne de code de recopie que je t’ai proposé comme ceci :

Sheets(« nom de l’onglet »).Range(« A » & Activecell.Row , Cells(Activecell.row,16).Address).Value = Sheets(« saisie_ordre »).Range(« B3:B18 »).Value

Testes et dis moi
N’oublies pas de modifier le nom « nom de l’onglet » et les guillemets

j’ai effectué la modification. La copie se fait sur la ligne mais maintenant c’est la valeur de A qui est sur toutes les colonnes de la ligne. Et c’est bien dommage

A l’origine la macro copie des valeurs en colonne de (« saisie_ordre ») de B3:B13 pour les coller dans ("HISTORIQUE_ORDRE) en ligne sauf que celle-ci copie et colle les valeurs et formules alors que je ne souhaite avoir que des valeurs

Difficile pour moi sans le fichier de pouvoir te proposer une solution satisfaisante car je ne peux la tester
A la place de ma ligne de code pour la recopie je te propose cette boucle
n = 0
For each c in Sheets(« saisie_ordre »).Range(« B3:B18 »)
Sheets(« nom de l’onglet »).Range(« A » & Activecell.Row).offset(0,n).Value=c
n = n+1
Next

Essaies et dis moi

N oublies pas les guillemets et la donnée « nom de l’onglet »

Attention petite coquille sur cette ligne de code :

For each c in Sheets(« saisie_ordre »).Range(« B3:B18 »)

Corrigée à récupérer en l état au lieu de :

For each c in range Sheets(« saisie_ordre »).Range(« B3:B18 »)

Mille excuses