Coller uniquement sur des cellules visibles

vblanches

XLDnaute Nouveau
Bonjour à tous,

Je me retrouve avec un problème que je n'arrive pas résoudre, et je n'ai pas réussi à trouver de solution en cherchant sur le forum, ni même sur le net en général.

J'ai deux tableaux différents, comportant chacun une colonne avec des données dedans.

Dans mon premier tableau, la colonne est filtrée à plusieurs endroits ; il y a donc certaines lignes qui sont "cachées".

J'aimerais coller le contenu de la colonne de mon deuxième tableau sur la colonne de mon premier tableau, mais qu'uniquement les lignes qui sont visibles soient modifiées.

Car le problème actuellement, c'est qu'en faisant un copier/coller de cette manière, Excel copie également le contenu sur les lignes qui sont cachées...

J'espère que je me suis bien fait comprendre, sinon n'hésitez pas à me le dire :p

Merci en tout cas d'avance à ceux qui pourront essayer m'aider, et bonne journée à tous !

Vince
 

job75

XLDnaute Barbatruc
Re : Coller uniquement sur des cellules visibles

Bonjour vblanches, bienvenue sur XLD,

L'énoncé présuppose que les 2 tableaux ont le même nombre de lignes.

Nommez-les Tableau1 et Tableau2.

Puis copier cette macro dans un Module (Alt+F11 => Insertion => Module) et exécutez-la :

Code:
Sub Copier()
Dim i As Long
For i = 1 To [Tableau2].Count
  If Not [Tableau1].Cells(i).EntireRow.Hidden Then _
    [Tableau1].Cells(i) = [Tableau2].Cells(i)
Next
End Sub
A+
 

vblanches

XLDnaute Nouveau
Re : Coller uniquement sur des cellules visibles

Bonjour job75, et merci beaucoup pour ta réponse.

J'ai testé la macro que tu m'a fournie, mais il me semble que ce ne fonctionne pas pour ce que je veux faire.

Je pense que mon explication n'était pas si clair que ça, donc je vais détailler un peu plus avec un exemple en image:

Voici mon premier tableau:



Et voici mon deuxième tableau



Mon but est de copier les valeurs du deuxième tableau (les "2") à la place des "1" du premier tableau.

Pour cela je filtre mon premier tableau (de cette manière il a exactement la même "taille" visuellement que le deuxième):



Mais le copier/coller ne fonctionne pas correctement vu que le premier tableau est "filtré".

En gros le résultat final du Tableau 1 que je recherche devrait donner ça:



Attention : ce n'est qu'un exemple simplifié... mes deux tableaux sont massivement plus grand, et les valeurs sont toutes différentes... :(

Merci d'avance !

Vince
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Coller uniquement sur des cellules visibles

Bonjour vblanches -bienvenu :) -, job75,

Un autre essai.


  • Le tableau 1 est sur Feuil1.
  • Les tableaux ou parties de tableau à copier sont soit sur Feuil1 (Tableau 1 bis) soit sur Feuil2 (Tableau 2).
  • Dans le code, indiquez ce qu'on veut copier (valeur, tout, formule, format...) en modifiant la constante xlPasteAll de la ligne: rgDes.PasteSpecial xlPasteAll.
  • On colle ligne visible par ligne visible l'ensemble des colonnes sélectionnées pour la copie (on peut copier le nombre de colonnes qu'on veut).
  • Cliquer sur le bouton dans Feuil1

VB:
Sub CollerSurVisible()
Dim rgSel As Range, rgDes As Range
Dim i As Long, CopieFaite As Boolean

On Error GoTo Error_001
Set rgSel = Nothing
Set rgSel = Application.InputBox("Sélectionner les cellules à copier:", _
        Type:=8)
If rgSel Is Nothing Then GoTo Error_001
If rgSel.Areas.Count <> 1 Then GoTo Error_001
On Error Resume Next

On Error GoTo Error_002
Set rgDes = Nothing
Set rgDes = Application.InputBox("Sélectionner la cellule (gauche haut) où coller les données:", _
        Type:=8)(1, 1)
If rgDes Is Nothing Then GoTo Error_002

On Error GoTo Error_003
For i = 1 To rgSel.Rows.Count
  Do
    CopieFaite = False
    If rgDes.EntireRow.Hidden Then
      Set rgDes = rgDes.Offset(1)
    Else
      rgSel.Rows(i).Copy
      'Remplacer xlPasteAll par ce que vous souhaitez copier
      'xlpasteAllAll -4104 Tout sera collé.
      'xlpasteAllAllExceptBorders 7 Tout sera collé à l'exception des bordures.
      'xlpasteAllAllMergingConditionalFormats 14 Tout sera collé et les formats conditionnels seront fusionnés.
      'xlpasteAllAllUsingSourceTheme 13 Tout sera collé sur la base du thème source.
      'xlpasteAllColumnWidths 8 La largeur de colonne copiée est collée.
      'xlpasteAllComments -4144 Les commentaires sont collés.
      'xlpasteAllFormats -4122 Le format source copié est collé.
      'xlpasteAllFormulas -4123 Les formules sont collées.
      'xlpasteAllFormulasAndNumberFormats 11 Les formules et les formats numériques sont collés.
      'xlpasteAllValidation 6 Les validations sont collées.
      'xlpasteAllValues -4163 Les valeurs sont collées.
      'xlpasteAllValuesAndNumberFormats
      rgDes.PasteSpecial xlPasteAll
      CopieFaite = True
      Set rgDes = rgDes.Offset(1)
    End If
  Loop Until CopieFaite
Next i
Exit Sub

Error_001:
  MsgBox "Sélection non valide => Sortie"
  Exit Sub

Error_002:
  MsgBox "Destination non valide => Sortie"
  Exit Sub

Error_003:
  MsgBox "Erreur Coller => Sortie"
  Exit Sub

End Sub
 

Pièces jointes

  • Copie sur cellules visibles v1.xlsm
    21.9 KB · Affichages: 263
Dernière édition:

job75

XLDnaute Barbatruc
Re : Coller uniquement sur des cellules visibles

Re, salut mapomme,

Oui, des explications n'étaient pas superflues.

Essayez donc, toujours avec des tableaux nommés :

Code:
Sub Copier()
 Dim n As Long, i As Long
 n = 1
 For i = 1 To [Tableau2].Count
   While [Tableau1].Cells(n).EntireRow.Hidden
     n = n + 1
   Wend
   [Tableau1].Cells(n) = [Tableau2].Cells(i)
   n = n + 1
 Next
End Sub
A+
 
Dernière édition:

muzomax

XLDnaute Nouveau
Re : Coller uniquement sur des cellules visibles

bonjour,

plus simple si tu ne veux pas de macro, tu sélectionnes tes données, puis F5, tu cliques sur cellule puis sur coche "cellule visible uniquement", tu valides, la tu copies et tu colles uniquement les données désirées
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Coller uniquement sur des cellules visibles

Bonsoir à tous, muzomax,

de muzomax,
tu sélectionnes tes données, puis F5, tu cliques sur cellule puis sur coche "cellule visible uniquement", tu valides, la tu copies et tu colles uniquement les données désirées.

Je dois faire une fausse manip car je n'arrive pas à mes fins :( . Peux-tu préciser ?
 

Pièces jointes

  • Copie sur cellules visibles v2.xlsx
    9.7 KB · Affichages: 426

viking74

XLDnaute Nouveau
Re : Coller uniquement sur des cellules visibles

Excellent script, que je mets tout de suite dans ma collection de scripts perso.
ça donne des idées pour des menus, la possibilité de sélection de cellule a travers un menu est génial.

Merci Pomme pour ce script. Qui répond à la question posée même si au début j'avais pas compris que l'on devais sélectionner a la souris les cellules
 

Discussions similaires

Statistiques des forums

Discussions
312 373
Messages
2 087 721
Membres
103 654
dernier inscrit
kingdz2022