XL 2016 Copier coller automatique vers une nouvelle feuille

Cocoraphsg

XLDnaute Nouveau
Bonjour,
Pour un fichier, j'essaye de créer un code VBA qui effectue un copier coller d'une sélection de cellules dans une nouvelle feuille (créer une nouvelle feuille pour chaque copier/coller)
Je veux qu'il se déclenche si une certaine condition est remplie, celle d'avoir une plage de données définie totalement vide
Et de plus, il faut renommer la nouvelle feuille avec la valeur rentrée dans deux cellules situées sur la première feuille.

Toutes les informations sont détaillés dans mon fichier exemple.

Auriez vous une solution ?

Merci d'avance !
 

Pièces jointes

  • Fichier Test VBA copier coller.xlsx
    10.9 KB · Affichages: 8
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Cocoraphsg,
Si les cellules de A2:A16 sont vides alors copier coller la sélection A2:A16, si non vide alors ne rien faire
Quel intérêt de copier des cellules vides ?
D'autant que votre flèche pointe C2:C16, ne serait ce pas plutôt :
Si les cellules de C2:C16 sont vides alors copier coller la sélection A2:A16, si non vide alors ne rien faire
ou l'inverse, si A vide copier C ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Alors un essai en PJ avec :
Code:
Sub Inserer()
    If WorksheetFunction.CountA([C2:C16]) = 0 Then
        Nom = [B20] & " " & [C20]
        If FeuilleExiste(Nom) Then
            MsgBox "Ce nom de feuille exite déjà."
        Else
            Sheets.Add(after:=Sheets(Sheets.Count)).Name = Nom
            [A1:A16] = Sheets("Feuil1").[A1:A16].Value
            [A1:A16].Borders.LineStyle = xlThin
            Columns.AutoFit
        End If
    Else
        MsgBox "Plage non vide."
    End If
End Sub
Function FeuilleExiste(Nom) As Boolean
  On Error Resume Next
  FeuilleExiste = Sheets(Nom).Name <> ""
  On Error GoTo 0
End Function
 

Pièces jointes

  • Fichier Test VBA copier coller (1).xlsm
    18.1 KB · Affichages: 5

StanislasC

XLDnaute Nouveau
En passant la macro en événementielle.
A chaque fois qu'on touche à une cellule de C2:C16 on regarde si c'est vide.
Quand c'est vide, on bosse.
Bonjour,

J'aurai sensiblement le même code à effectuer,
Mais le code ne marche pas parce que mes cellules ne sont pas réellement vides mais doivent s'activer quand le résultat de la formule de mes cellules est ="" (résultat vide).

Que faudrait-il changer dans le code ci-dessus pour que cela marche ?

Cordialement,
Merci d'avance.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Stanislas, et bienvenu sur XLD,
Essayez cette PJ. La condition de déclenchement se fait sur :
VB:
Vide = 1 ' 1 si tout contient "", sinon 0
For Each C In [C2:C16]
    If C <> "" Then Vide = 0
Next C
If Vide = 1 Then
....Création feuille
Pour créer la feuille il faut que tout soit vide ou ="".
 

Pièces jointes

  • Fichier Test VBA copier coller (4).xlsm
    19 KB · Affichages: 8

StanislasC

XLDnaute Nouveau
Alors je ne sais pas pourquoi, mais les valeurs copiées ne correspondent pas à ce que je veux copier.
Malheureusement je ne peux pas montrer le fichier en question pour être le plus clair possible.

Mais si je devais essayer d'expliquer la situation clairement :
Les données que je souhaite copier coller sont des résultats de formules venant de plusieurs feuilles.
Et le coller ne me copie colle pas le résultat de cette formule mais une données qui provient certainement d'une des données de la formule.
Il y a t-il un moyen d'effectuer un copier coller non pas en tant que valeur mais plutôt comme un copier coller image de la sélection voulu afin d'avoir juste les résultats, la mise en forme mais rien d'autre (pas la formule initiale ou la source de cette formule).

J'espère être assez clair dans mes explications même si pour moi c'est déjà un peu confus
 
Dernière édition:

Discussions similaires