Macro pour copier coller dans autre feuille

ginteo

XLDnaute Nouveau
J'ai un fichier avec des morceau de macro,

la macro qui me pose souci c'est la "copié_réalisée"

pour expliquer :
- transfert de l'onglet "inventaire par salle" à "feuill2"
- je copie la trame (les 3 première ligne)
- je copie toute les ligne avec "réalisé" en colonne 10
- je supprime toute les ligne vides de feuill2 (je bug à ce niveau, j'ai mis une macro en annotation dans copié_réalisé)

- j'aimerai aussi remplacer feuill2 par le nom donné par la macro "ajout_feuille"

- puis pour finir macro supp_réalisé pour feuille inventaire suivi de macro supp_ligne vide

comme ça le transfert de toute les donnée réalisé sont faite et je repars avec un inventaire propre

Bug aussi au niveau de la dernière ligne avec la valeur "réalisé", elle n'est pas prise en compte dans le transfert je ne comprend pas
 

Pièces jointes

  • doc.xlsm
    443.5 KB · Affichages: 41

Lone-wolf

XLDnaute Barbatruc
Bonsoir ginteo

Voici un premier jet. Le reste de ta demande pas trop compris.

VB:
Sub copie_réalisé()
Dim i As Long, derlig As Long, plage As Range, plg As Range
Dim shSource As Worksheet, shDest As Worksheet
  
    Set shSource = Sheets("inventaire par salle")
    Set shDest = Feuil11   'Qui est la feuille 2 (feuille2 est le nom de l'onglet) - Feuil11 est le CodeName de la feuille
    shDest.Cells.Clear
  
    With shSource
        .Range("A1:L3").Copy shDest.Range("a1")
      
        derlig = .Range("d" & .Rows.Count).End(xlUp).Row
        
        For i = 4 To derlig
            If .Cells(i, "J") = "réalisé" Then
                Set plage = .Range(.Cells(i, "A"), .Cells(i, "L"))
                plage.Copy shDest.Cells(i - 1, "A")
            End If
        Next i
    End With
  
    With shDest
        Set plg = .Range("d4:d" & derlig)
        .Name = "Doc. Unique du " & Format(Date, "yyyy-mm-dd")
    End With
        plg.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    End Sub
 

ginteo

XLDnaute Nouveau
Merci ça marche bien,
mais j'ai enlevé le "-1" de plage.Copy shDest.Cells(i - 1, "A")
car la copie ne marche pas avec la première ligne (n°4) si il y a réalisé

Pour le reste, j'aimerai ajouter une variable pour le nom de la feuille (ici FEUILL11 dans le code)

Car j'ai oublié de dire que la feuille n'existe pas en début de la macro ^^, l'ordre serait
- ajout d'une feuille avec nom (la variable)
J'ai supprimé la feuill2, je n'arrive pas à trouver le codename de la nouvelle feuille pour retester le code...
- puis la macro que tu as faites
- j'ai ajouté dans la macro en annotation le code pour nettoyer la feuille source (c'est la suite que j'ai mal expliqué ^^), cette partie pourrait venir après mon ps (ci-dessous)

j'ai modifié dans ce fichier, c'est la macro(4)


ps : j'aimerai faire le même travail avec l'autre feuille "inventaire commun"
pour l'ajouter à la suite de l'extraction inventaire par salle
il y a une commande pour fusionner deux feuilles ?

J'espère avoir été plus clair cette fois ci
 

Pièces jointes

  • doc.xlsm
    437.1 KB · Affichages: 51

Lone-wolf

XLDnaute Barbatruc
Bonjour ginteo

Le code name de la feuille, tu le vois dans la fenêtre à gauche du projet VBA, exemple : Feuil1(Feuil1), le nom qui est en dehors des parenthèses et le code name. Bon, bein, voilà ce que j'ai fait.

Dans la feuille inventaire commun, j'ai ajouter 2 boutons; un pour l'ajout et la copie, l'autre pour la suppression de "réalisé".

Pour la feuille inventaire par salle, clique sur la croix à droite des onglets, pour créer une nouvelle feuille et copier.
La macro est dans le module ThisWorkbook.

Pour le nom(variable), j'ai fait comme ceci : NouveauNom = "Doc. Unique du " & Format(Date, "yyyy-mm-dd") pour inventaire salle,
et NouveauNom = "Inventaire Commun du " & Format(Date, "yyyy-mm-dd") pour l'autre feuille.
Mais pas sûr si c'est ça que tu veux. Attention! les nouvelles feuilles ne peuvent pas porter le même nom, sinon erreur.

En ce qui concerne la macro avec FormulaArray, manuellement à partir de A5 : =SI('Inventaire par salle'!A4="";"";'Inventaire par salle'!A4) , ensuite tu étire sur toute la plage A5:L1996.
 

Pièces jointes

  • doc-V3.xlsm
    431.5 KB · Affichages: 47
Dernière édition:

ginteo

XLDnaute Nouveau
je modifié un peu le fichier pour un truc plus simple


Voici les macros que j'ai faites,
et ça fonctionne très bien, juste quelques remarques ci-dessous pour des points d'amélioration

Je suis content, j'ai appris pas mal de truc utile, merci Lone-wolf


feuille Inventaire :
- macro historique_réalisé : elle bug si aucune ligne à transféré, possibilité de mettre un message box à la place disant qu'il n'y a aucune ligne transféré, également pour les lignes transférées un message box indiquant le nombre de ligne transféré ??
- j'ai pas réussi à retrouver la syntaxe pour remplacer le nom de la feuille par son codename (changer historique programme par feuil12)

Programme d'action :
- macro actualisation : c'est possible de supprimer la mise en forme aussi de la cellule (couleur remplissage, bordure...) ?? pas utile de se prendre la tête pour ça

Historique :
- j'ai mis des filtres pour trier (mais des macros pour trier des dates au format "2018" et "01/12/2018" ou tri par d'autre colonne c'est possible ?)
 

Pièces jointes

  • test macro.xlsm
    170 KB · Affichages: 57

Lone-wolf

XLDnaute Barbatruc
Bonjour ginteo

Débrouille toi; ça ne sert à rien de me fatiguer vu que tu en fait qu'à ta tête. Et est-ce que tu as vu le fichier au post #4??

En image, le fichier que j'ai modifié
fichier1.gif


Ton dernier fichier
fichier2.gif
 
Dernière édition:

ginteo

XLDnaute Nouveau
Bien sûr que j'ai vu le fichier, et je ne travaille pas dessus, c'est juste une extraction pour enlever des données inutile mon mon fichier, pour simplifier.

et j'ai allégé le fichier en supprimant les ajouts de feuilles, car ça va devenir compliqué par la suite pour gérer ça.

Il y a toujours les même macro, (j'en ai juste ajouté une)

pour les modules je ne sais pas comment les supprimer
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 945
Membres
101 849
dernier inscrit
florentMIG