Améliorer mon code vba


#1

Bonjour Mimi Bonjour le Forum

Mimi ,Voila je bloque je voudrai ajouter des lignes de codes et je n’arrive pas a coller ce code

Aide moi MerciAméliorerMon Code.xlsm (31,1 Ko)

Je vous remercie d’avance

said


#2

Bonjour,

A tester

LA MACRO:

Sub Regler()
'Déclaration variable
Dim i%, j%, Dl%, Cpt%
Dim X As Variant
Dim Ws As Worksheet, Wd As Worksheet
'Initialisation variable
Set Ws = Sheets("Feuil6")
Set Wd = Sheets("32659")
Dl = Ws.Range("B" & Rows.Count).End(xlUp).Row 'Dernière ligne non vide
j = 2
Wd.Cells.Delete Shift:=xlUp
Ws.Range(Cells(1, 2), Cells(1, 7)).Copy Wd.Cells(1, 2) 'Copie l'entête
  For i = 2 To Dl 'Boucle sur les lignes
    If Ws.Cells(i, 6).Value = Ws.Cells(3, 11).Value Then 'si la ligne contient la valeur de la cellule K3
      Ws.Range(Cells(i, 2), Cells(i, 7)).Copy 'Copy les valeurs
      Wd.Cells(j, 2).PasteSpecial Paste:=xlValues 'colle les valeurs
      Wd.Cells(j, 2) = Format(Wd.Cells(j, 2), "dd/mm/yyyy") 'Formate la date
      j = j + 1 'ajoute une ligne
    End If
  Next i
  Wd.Activate 'Active la feuille destination
  Range("B1:G" & j - 1).Select 'Sélectionne toutes les lignes remplies et place une bordure
  Application.CutCopyMode = False
  With Selection.Borders(xlEdgeLeft)
      .LineStyle = xlContinuous
  End With
  With Selection.Borders(xlEdgeTop)
      .LineStyle = xlContinuous
  End With
  With Selection.Borders(xlEdgeBottom)
      .LineStyle = xlContinuous
  End With
  With Selection.Borders(xlEdgeRight)
      .LineStyle = xlContinuous
  End With
  With Selection.Borders(xlInsideVertical)
      .LineStyle = xlContinuous
  End With
  With Selection.Borders(xlInsideHorizontal)
      .LineStyle = xlContinuous
  End With
  'Dimension des largeurs de colonne de la feuille source
  X = Array(2.57, 14, 10.71, 13.86, 16.43, 15.71, 19.14)
    For Cpt = 0 To 6 'Boucle sur les colonnes de A à G
      Range("A:A").Offset(0, Cpt).ColumnWidth = X(Cpt) 'Ajuste suivant la valeur de "X" de l'Array avec un décalage d'une colonne à la fois
    Next Cpt
  Range("B1").Select
End Sub

AméliorerMon Code.xlsm (32,6 Ko)


#3

Bonsoir Mimi

Je ne sais pas ou est la faille il y a une fenêtre qui s’affiche:

image

Merci Mimi pour tous


#4

re bonsoir Mimi

Voici la ligne qui bloque : Set Wd = Sheets(“32659”)
je ne suis pas pro, mais qu’on je crée le N° 32659 manuellement et j’exécute pas à pas je
pense que ça a marcher

Merci Mimi et bon Dimanche.


#5

Re,

As-tu l’erreur avec le classeur que j’ai fourni?
ou
Avec un classeur à toi où tu as recopié la macro?

Car dans le classeur que tu as fourni, le nom de l’onglet 32659 commence par un espace :wink:


#6

Bonjour Mimi
Oui l’erreur est avec le classeur que tu a créer le code et a l’instant même j’ai refais l’opération et toujours pareille .
a propos du nombre 32659 c’est le code qui crée l’onglet d’après la recherche du numéro de chèque dans la cellule K3.
Merci pour votre réponse

Très bonne journée


#7

Re,

Bizarre,

J’ai fait le test avec Excel 2010 - 2013 - 2016 et pas de soucis

Quel est ta version Excel ?


#8

Ok
Je suis sous excel 2013.


#9

Re,

Oui cela vient de ta macro en feuille 6

il ne faut pas mettre

Reglement = Str(Sheets("Feuil6").Range("K3").Value)

mais
Reglement = Sheets("Feuil6").Range("K3").Value

sinon, cela t’ajoute un espace avant ton numéro (regarde)


#10

Toujours même problème je suis entrain de revoir le code Peut être que je trouve quelques chose
Je reviendrai

Merci Mimi


#11

Re,

Teste ceci,

Si j’ai compris tu veux renseigner les feuilles avec le N° de règlement si la feuille existe et si elle n’existe pas elle se créée et se renseigne.
AméliorerMon Code.xlsm (26,2 Ko)


#12

Exactement
Par exemple si j’ai 10 factures payées par cheque,
Dans la colonne Reglement les 10factures auront le meme numero du cheque par exemple 0025 et en cliquant sur Chercher il doit chercher les 10 factures qui ont le numéro 0025 et il cree l’onglet et faire une copie des 10 factures.

Merci Mimi


#13

Re,
As-tu tester le dernier classeur, c’est ce qu’il fait


#14

Oui normalement c’est ça , mais il reste un petit problème elle prends 02 lignes sur 06 lignes et elle
s’arrête.
ça veut dire que le code copie uniquement deux lignes.

Merci


#15

Re,
Tu as un problème de PC ou d’Excel,

Envoi une copie d’écran ou ton classeur sur lequel tu travailles


#16

Bonjour Mim
C’est Bon le problème était dans le bouton , comme j’étais presser d’avoir le résultat j’ai oublier de
supprimer le lien d’affectation du premier code alors je pense qu’il y avait un conflit .

De toutes les façons je te tire chapeau et je te remercie de votre temps que a consacrer pour résoudre mon probleme

Je te dois un Café avec un gateau::grinning:

Merci encore Mimi