es fr fr fr fr fr fr fr fr fr fr fr fr fr fr en fr fr fr fr fr fr fr fr fr fr cs fr fr fr fr fr fr fr fr fr fr fr fr fr fr en en fr fr fr fr fr en fr nl fr fr fr fr fr fr fr fr en fr en fr fr fr fr fr fr fr fr fr fr fr ca es fr fr fr fr en en fr de fr fr fr fr fr fr fr es fr fr fr en de fr de fr fr fr en fr fr fr fr en en fr de fr fr fr fr fr fr fr fr de fr fr fr en en fr de fr fr es id ms fr fr fr fr fr fr fr id fr fr fr fr en en fr de fr fr fr fr fr fr fr fr fr fr de fr fr fr en en fr de en fr fr es id fr fr fr fr en en fr de fr fr fr fr fr fr fr en pt fr de fr fr fr en en fr de fr fr fr es id fr fr fr fr en en fr de fr fr fr fr fr fr fr fr de fr fr fr en en fr de en fr fr es id fr fr fr fr en en fr de fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr en fr de fr fr fr en en fr de en fr fr fr id fr fr fr fr en en fr de fr fr fr fr fr de fr fr fr en en fr de en fr fr fr fr es id fr fr fr fr en en fr de fr fr fr fr fr fr ca fr en en fr en fr fr en en en fr
Ne connaissant rien aux macros, j'ai essayé d'en bricoler 2 à partir d'une que ma fait Nad-Dan pour tout autre chose;
Dans validation_rentrées, le retour dans l'onglet ne se fait pas (je reste sur l'Onglet Commandes) et sur validation_commandes le collage en E1020 décale le reste du tableau de 2 lignes.
Quelqu'un comprend-il ce qui se passe ?
Sub validation_rentrées() ' ' validation_rentrées Macro ' ' Dim cel As Range, Lr As Byte 'Définition de la variable Lr Lr = Range("n2") 'Lr=N° de la dernière ligne à copier Application.ScreenUpdating = False Range(Cells(10, "f"), Cells(Lr, "f")).Select 'Plage à copier F10:F(dernière ligne identifiée) Selection.Copy 'Copier Sheets("Mouvements").Select 'Déplacement dans l'onglet Mouvements Range("e10").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Collage spécial valeurs en E10 Range("e1012").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Collage spécial valeurs en E1012 Sheets("Commandes").Select 'Déplacement dans l'onglet Commandes Range("e1020").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Collage spécial valeurs en E1020 Sheets("Rentrées Produits").Select 'Retour Onglet Rentrées produits Range("D7").Select 'Retour dans l'onglet Rentrées End Sub Sub validation_commandes() ' ' validation_commandes Macro ' ' ' Dim cel As Range, Lg As Byte 'Définition de la variable Lg Lg = Range("n2") 'Lg=N° de la dernière ligne à copier Application.ScreenUpdating = False Range(Cells(10, "f"), Cells(Lg, "f")).Select 'Plage à copier F10:F(dernière ligne identifiée) Selection.Copy 'Copier Range("d1020").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Collage spécial valeurs en D1020 Sheets("Mouvements").Select 'Déplacement dans l'onglet Mouvements Range("d10").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Collage spécial valeurs en D10 Range("d1012").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Collage spécial valeurs en D1012 Range("d2014").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Collage spécial valeurs en D2014 Sheets("Commandes").Select 'Retour Onglet Commandes Range("D6").Select 'Retour dans l'onglet Commandes Application.CutCopyMode = False End Sub
ce serait mieux d'avoir un fichier!
On voit à peu près ce que tu veux faire mais pour t'aider c'est toujours mieux quand on a de quoi travailler dessus!
C'est impossible car même en le réduisant au strict minimum, le fichier fait 1.8 Mo : il est donc largement au-dessus des 100ko.
La chose bizarre dans mes problèmes est que les commandes qui ne marchent pas sont issues de copier-coller (adapté aux cellules et feuilles concernées) de commandes qui marchent : du point de vue de l'écriture, elles sont donc strictement identiques.
Dans validation_commandes le collage spécial fonctionne sur sheets"Mouvements" en D10 et D1012 mais pas en 2024
Dans validation_rentrées, le retour sheets("rentrées produits") ne marche pas alors que dans validation_commandes le sheets("commades") marche
J'ai passé 1 journée dessus : il ne me reste plus que le forum ...
Quelles sont les valeurs maximum que la cellule N2 peut avoir ?
En dehors de ma question, il faudrait aussi voir si tu n'as pas d'autres macros dans ton fichier qui influencent ce que tu fais avec ces deux codes.
Essaie déjà avec ces deux codes :
Sub validation_rentrées() ' validation_rentrées Macro Dim cel As Range Dim Lr As Integer 'Définition de la variable Lr Lr = Range("n2") 'Lr=N° de la dernière ligne à copier Application.ScreenUpdating = False Range(Cells(10, "f"), Cells(Lr, "f")).Copy 'Plage à copier F10:F(dernière ligne identifiée) With Sheets("Mouvements") 'Déplacement dans l'onglet Mouvements .Range("e10,e1012").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Collage spécial valeurs en E10 End With 'Déplacement dans l'onglet Commandes Sheets("Commandes").Range("e1020").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Collage spécial valeurs en E1020 Application.CutCopyMode = False Sheets("Rentrées Produits").Select 'Retour Onglet Rentrées produits Range("D7").Select 'Retour dans l'onglet Rentrées End Sub
Si cette macro est exécutée depuis la feuille Rentrée produits, tu peux supprimer l'avant dernière instruction.
Sub validation_commandes() ' validation_commandes Macro Dim cel As Range Dim Lg As Integer 'Définition de la variable Lg Lg = Range("n2") 'Lg=N° de la dernière ligne à copier Application.ScreenUpdating = False Range(Cells(10, "f"), Cells(Lg, "f")).Copy 'Plage à copier F10:F(dernière ligne identifiée) Range("d1020").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Collage spécial valeurs en D1020 With Sheets("Mouvements") 'Déplacement dans l'onglet Mouvements .Range("d10,d1012,d2014").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Collage spécial valeurs en D10 et d1012 et 2014 End With Application.CutCopyMode = False Sheets("Commandes").Select 'Retour Onglet Commandes Range("D6").Select 'Retour dans l'onglet Commandes End Sub
Si cette macro est exécutée depuis la feuille Commandes, tu peux supprimer l'avant dernière instruction.
Le 13/10/2009 à 14:44
Je vais essayer tes macros de ce pas et je reviens.
En attendant, je réponds à tes 2 questions :
*N2= 10 à 1018 maxi
*Pour ce qui est des autres macro :
1/il y a celle que tu m'as faite pour masquer les colonnes en fonction d'un N° de ligne à saisir (onglet"Commandes")
2/une qui réaffiche tout (onglet"Commandes")
3/une qui trie des valeurs (onglet"Nomenclature")
Merci de ton aide
Le 13/10/2009 à 15:47
2003 FR-2007 FR-MAC 2004 FR
Ok. Avec mes deux macros cela devrait fonctionner.
Les variables LG et LR doivent être INTEGER.
Le 13/10/2009 à 15:56
*Sur macro Validation_Rentrées 1 message d'erreur mais j'ai pu corriger : à sheets("Mouvements") à la place de Range ("e10,e1012") j'ai mis ("e10") seulement
Résultat : çA MARCHE
*Sur macro validation_Commandes 1 message d'erreur ; j'ai essayé de corriger à with sheets("Mouvements") tu avais regroupé les cellules de collage ("d10,d1012,d2024"), j'ai recopié les lignes pour faire 3 commandes distinctes : 1 pour d10, 1 pour d1012 et 1 pour d2024
résultat : ça marche mal comme avant : tout ce copie bien sauf en d2024
Je te joins une représentation pour te faire voir le résultat obtenu
Le 13/10/2009 à 20:51
2003 FR-2007 FR-MAC 2004 FR
dans ton fichier c'est D2014 et tu parles de D2024 ...
Pour les groupes, cela fonctionne. faudrait voir ton fichier orginal pour comprendre.
Le 14/10/2009 à 09:04
C'est mon clavier qui a fourché : c'est bien D2014.
Le fichier que j'ai joint est un un tableau que j'ai reconstitué pour uniquemment faire voir le résultat que j'obtiens dans le vrai (qui est injoignable : même réduit au strict minimum il fait 1.8 Mo)
Le problème vient de la macro validation_commandes pour d2014 qui colle en me décalant une partie du tableau (voir fichier) alors que quand je fais l'opération "à la main" tout se passe bien
Par ailleurs cette même macro fonctionne parfaitement pour les autres collages.en D10 et D1012
C'est un vrai casse-tête et il n'y a plus que ça pour que je puisse le donner au service qui me l'a demandé : c'est balot !
Merci de ton aide
Le 14/10/2009 à 09:50
2003 FR-2007 FR-MAC 2004 FR
En te lisant, cela me fait penser à un pb de cellules fusionnées dans tes feuiles de destination.
As-tu essayé en faisant des essais de copiage en désactivant les instructions dans le code pour ne coller uniquement qu'en D10 puis uniquement en D1012, puis uniquement en D2014. A chaque fois regarde ce qui se passe dans ton tableau en D2014.
Le 14/10/2009 à 11:03
1°/ Pour ce qui est de cellule de desination fusionnée, il n'y en a pas
2°/ J'ai essayé sur des fichiers séparés : bug = le tableau en D2014 se décale vers le bas / ok = il reste à sa place d'origine
Collages en D10 : ok
Collage en D1012 : bug
Collage en D2014 : ok
Collages en D10 et D1012 : bug
Collages en D10 et D2014 : ok
Collages en D1012 et D2014 : bug
On se rend donc compte qu'en fait le bug se produit à chaque fois que la cellule D1012 est en jeu ; le décalage du tableau en D2014 est produit par le collage de valeurs en D1012:D1016 (copie de 5 cellules) ; en fait tout se passe comme si on faisait "Insérer les cellules copiées" et non Coller simplement.
Ce qui est troublant, c'est que la même commande en D10 ne provoque aucun décalage (le même bug que D2014 devrait décaler et le tableau en D1012 et celui en D2014, ce qui n'est pas le cas)
Le problème est le même si on fait le copier-collage spécial valeur avec la souris : au final, ce n'est donc pas un problème de macro mais un problème de tableau structuré.
Si je convertis le tableau en D1012 en plage, le problème disparaît. Mais là encore il y a une incohérence puisque en D10 j'ai aussi un tableau structuré qui ne pose aucun problème.
P.S. : je suis obligé d'utiliser des tableaux structurés
Donc on avance mais le problème demeure ...
Le 14/10/2009 à 12:42
2003 FR-2007 FR-MAC 2004 FR
je suis obligé d'utiliser des tableaux structurés
Que veux-tu dire par là ?
As-tu des formules ou des liaisons dans ton fichier avec un autre ?
Le 14/10/2009 à 14:58
1/ Je suis obligé car on ne connait pas le nombre de mouvements (entrées-sorties de produits). J'avais donc misé au départ sur 1000 et mon tableau a atteint 100Mo puisque j'avais prévu toutes les formules sur 1000 lignes dans différents onglets. A partir de là je me suis dit que les tableaux structurés étaient donc la solution du fait qu'ils se développent au fur et à mesure de leur utilisation ; au final, ils seront aussi lourds mais en attendant on gagne du poids au départ.
2/ Pour ce qui est des liaisons, il y en a entre les 5 onglets du classeur uniquement. Au départ j'avais prévu des classeurs distincts à la place des onglets (pour faire des fichiers moins lourds) mais compte tenu du nombre de liaisons externes que cela représentait il fallait un temps pas possible pour enregistrer des modifs ou ouvrir un classeur (j'ai pu constater qu'à poids égal, un classeur avec des liaisons externes est beaucoup plus lent).
Le 14/10/2009 à 17:31
2003 FR-2007 FR-MAC 2004 FR
Tu ne réponds pas à ma question dans mon courrier précdent à savoir ce que tu veux dire par "tableau structuré"
mon tableau a atteint 100Mo
Que veux tu dire ??
Autre chose, je vois que tu ne lis par ta boite personnelle du forum - option juste au dessus de "joindre un fichier" au dessus de cette page
Le 14/10/2009 à 18:11
1°/ Pour ce qui est des messages, je ne savais pas que ça existait ...(ça y est, j'en viens)
2°/ En ce qui concerne les tableaux structurés (c'est comma ça qu'ils sont appelés dans le bouquin que j'ai acheté sur 2007) c'est par Onglet Insertion > Tableau. Je les ai découvert avec 2007 et j'ai trouvé ça très intéressant.
Pour ce qui est du fichier de 100Mo c'était dans la présentation classique où il avait fallu que je prévois 1000 lignes de calculs à l'avance sur plusieurs onglets. Le nouveau débute avec 4 (pour tester mes formules) et pèse autour de 2 Mo ; il s'alourdira au fur et à mesure mais en attendant ce n'est pas un monstre.