Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Simplification de procèdures

  • Initiateur de la discussion Initiateur de la discussion br44
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

br44

XLDnaute Impliqué
Bonjour le forum


voilà après avoir enregistré ma procèdure je me suis apperçu qu'elle ètait peut-être un lourde (168ko) .

je voudrais savoir si l'on peut allerger des procèdures en faisant en sorte que l'on joue sur des plages au lieu de cellules .

Exemple :
procèdure 1
If Range("A1").Value=Sheets("Feuil1).Range("A1")+Sheets("Feuil2").Range("C5").value
End If

Cette formule ètant valable pour les cellules consernées allant de "A1:A6"

Procèdure 2

je doit séparer mes clients en deux groupes mais pour ce faire j'ai une mis condition IF presque pour chaqu'un deux en fonction de leur code .Est-il possible d'alleger car dans l'exmple je n'est que 15clients (pour essais) ,mais le fichier final en aurrais une centaines ?

Espèrant avoir été claire dans ma demande je dis à bientôt sur ce fil et vous remercie par avance .Ci-joint les procèdures : BR44
 

Pièces jointes

Re : Simplification de procèdures

Salut
Pour avoir une chance que ça fonctionne, il faudrait que je sache exactement ce que tu veux faire avec ton code => c'est pour ça que j'ai mis "du style", parce que comme je ne sais pas ce que dois faire la macro, je ne sais pas la construire.
Dans ton 1er code, I évoluait et pas Y => autant remplacer Y par sa valeur.
Mais si tu as mis une variable, c'est donc que tu veux la voir évoluer d'une manière différente de I
Tu peux soit la redéfinir en fonction de I
soit mettre ta formule à l'intérieur de la boucle
Code:
y = 1 
For I = 2 To .Range("A1:G29").Rows.Count le Problème est là 
.Rows(I).RowHeight = Sheets("Détail").Rows(y).RowHeight 
Next 
y = IIf(y > 15 / 2, 1, y + 1)
serait remplacé par
Code:
y = 1 
For I = 2 To .Range("A1:G29").Rows.Count le Problème est là 
.Rows(I).RowHeight = Sheets("Détail").Rows(y).RowHeight 
y = IIf(y > 15 / 2, 1, y + 1) 
Next
=> mais comme tu as parlé de pas de 30 ou 50, je ne sais pas où tu veux en venir. Donc explique le problème et on t'aidera à le résoudre
A+
 
Re : Simplification de procèdures

Rebonjour Gorfael ,le forum

Je viens de lire t'on dernier message et je vais tenté de t'expliquer . Dans la macros qui suis :

With Sheets("Récap2")
For I = 1 To .Range("A1:G29").Columns.Count
.Columns(I).ColumnWidth = Sheets("Détail").Columns(I).ColumnWidth
Next

y = 1
For I = 2 To .Range("A1:G29").Rows.Count
Rows(I).RowHeight = Sheets("Détail").Rows(y).RowHeight
Next
y = IIf(y > 15 / 2, 1, y + 1)
End With

Le premier "For i" détermine la largueur des colonnes allant de "A:G" sur la feuille "Récap2" (idem pour la "récap1") qui est de taille indentique à ma feuille "Détail" . Là il n'y à aucun problème puisque celà ne change pas .

Mais le deuxième "For y" lui déterminie la hauteur des lignes allant de"1:29" sur la "Récap2"(idem pour la "récap1") qui lui est indentique à la hauteur des lignes "1:29" de la feuille "Détail" .Là ou cela bloc c'est que ma hauteur de lignes elle change puisque la plage de copier se décale de 30 lignes en "Récap2" puisqu'elles se place en dessous de la première copie de la feuille"Détail" et de 50 lignes en "Récap1" puisqu'elle se place en dessous de la copie de la feuilles "Facture" .

Ce que je voudrais et que le "For y" s'applique à chaques fois que la feuille "Détail" est copiée .

Tu trouveras ci-joint un petit ficher contenant mes deux feuilles "Récap"
avec des explications pour te donner une idée .

Sur ce je vous dis à plus sur se fil et vous remercie d'avance du coup de main . Br44
 

Pièces jointes

Re : Simplification de procèdures

Bonsoir Lacorse33,Gorfael ,le forum


Lacorse 33 : En réponse à ton message que je viens de regarder .Je tien te remercier d'avoir répondu sur ce fil .

en ce qui conserne le fichier que tu ma envoyer je viens de le tester et malheureusement cela ne vas pas convenir .

Oui je connaisait cet possibiliter mais elle ne me convient pas pour la raison suivantes :

la procédure par "UsedRange" formates toutes les lignes de la pages hors j'ai deux formats différants ,donc la deuxième copies est modifiée aussi .

Je le signalais dans mon message d' hier poster à 14h21

Je suis vraiment désoler que cela ne conviennent pas .

je reflechit à une autres possibilitée mais je ne sais pas encore comment je pourrait tourner ça ?

Hypothése de travail : Au lieu de prendre "y" comme variable de boucle pourquoi ne dèclarer la plage comme une variable à part entière et ensuite la mettres en boucle ce qui donnerais un truc du style :

'Déclare la variable Y
Dim y as Range
'Définit la variable Y
Set y = Range"(A1:G29")
'Définit la hauteur de lignes
Y= row:24.75

With "Récap2"

For i = 1 To .Y Step 30.Rows.Count
.rows(i).Rowheight= Sheets("Détail").Rows(i).RowHeight
Next
End With
End Sub

je ne sais pas si s'est réalisable où si l'écriture est correct mais bon c'est une idée ?
Si vous pouvez m'aider à creuser serais bien .En vous remerciant par avances je vous dis à plus sur ce fil . Br44
 
Re : Simplification de procèdures

salut à tous

Bon on va poser les valises et reprendre le problème en français
Si j'ai bien compris :
Feuille "Détails"
Les lignes de 1 à 29 te servent de référence hauteurs

Feuille "Récap 1"
Les lignes de 1 à 29 doivent avoir la même hauteur que celles de référence
Les lignes de 79 à 107 doivent avoir la même hauteur que celles de référence

Feuille "Récap 2"
Les lignes de 1 à 29 doivent avoir la même hauteur que celles de référence
Les lignes de 30 à 58 doivent avoir la même hauteur que celles de référence

C'est plus clair
Je ne m'occupe que de la partie problèmatique

With "Récap2"
y=0
Do
For i = 1 To 29
.rows(i+y).Rowheight= Sheets("Détail").Rows(i).RowHeight
Next i
y=iff(.name="Récap1",Y=Y+79;Y=y+30)
Loop until (.name="Récap2" and Y>30) or Y>79
End With
End Sub

Désolé du retard, le forum me renvoi des notification d'Août, mais pas celles actuelles

=>le Y=Y+valeur, pourrait être remplacé en fixant directement la valeur, mais il faudrait faire attention aux conditions de sortie de boucles. Comme ça, c'est plus simple.

Normes allemandes.. euh normalement, ça devrait être plus mieux bien comme résultat
A+
 
Re : Simplification de procèdures

Bonjour Gorfael ,LaCorse33 et tout le forum

Gorfael
Juste ces quelques mots pour accuser récption de ton dernier message .Le temps de tester et je te tient au courant du résultat . Merci pour tout à plus
BR44
 
Re : Simplification de procèdures

Rebonjour à toutes et à tous

Bon je viens d'essayer t'as dernière procédure ,mais j'ai un petit souci à ce niveau de :

y=iff(.name="Récap1",Y=Y+79;Y=y+30)

J'ai un message qui me dit :Sub ou Fonction non définit pour le "iff" peut -tu me donnée la bonne varible à déclarer s.v.p merci d'avance .

En te remerciant par avance et milles excuses pour le dérangement à Bientôt Br44
 
Re : Simplification de procèdures

Salut à tous
Y a mon clavier y fait rien que m'embêter

Il met iff au lieu de iif

désolé, quoique comme je dis souvent :
ça servirait à quoi que je soit bête si je vous le montrais pas, hein ?

donc remplacer
y=iff(.name="Récap1",Y=Y+79;Y=y+30)
par
y=Iif(.name="Récap1",Y=Y+79;Y=y+30)
 
Re : Simplification de procèdures

Salut à tous le forum et à Gorfael

Bon je viens de prendre connaissances de t'as réponse le temps de veriffier tous ça et je revient .

Merci pour tout à plus br44
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
823
Réponses
1
Affichages
1 K
J
Réponses
22
Affichages
3 K
jui42
J
R
Réponses
3
Affichages
4 K
R
M
  • Question Question
Réponses
4
Affichages
1 K
Makovitch
M
N
Réponses
6
Affichages
2 K
D
Réponses
49
Affichages
9 K
D
Réponses
1
Affichages
1 K
J
  • Question Question
Réponses
6
Affichages
936
J
J
Réponses
9
Affichages
3 K
joaoratao
J
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…