Ne coller que dans les cellules vides
M
Bonjour, je n'ai pas réussi à faire une chose qui me paraisait simple, c'est de copier un ensemble de cellules et ne les coller que dans les ensembles vides.
Merci de votre aide:
Sub toutelaSemaine()
'Copier coller un groupe de cellules dans les cellules voisines mais ignorer si les cellules sont déja pleines
'La selection à copier est C126:F128 (c'est les données de lundi) dans les cellules H126 : Z126 ( mardi-vendredi)
If ActiveSheet.Range("C126:Z128") = "" Then
'cette partie fonctionne mais je suis preneur de simplification
If ActiveSheet.Range("C126:Z128").MergeCells = True Then
ActiveSheet.Range("H126:K128").Value = Range("C126:F128").Value
ActiveSheet.Range("M126:P128").Value = Range("C126:F128").Value
ActiveSheet.Range("R126:U128").Value = Range("C126:F128").Value
ActiveSheet.Range("W126:Z128").Value = Range("C126:F128").Value
Else
ActiveSheet.Range("H126:K128").Value = Range("C126:F128").Value
ActiveSheet.Range("M126:P128").Value = Range("C126:F128").Value
ActiveSheet.Range("R126:U128").Value = Range("C126:F128").Value
ActiveSheet.Range("W126:Z128").Value = Range("C126:F128").Value
End If
End If
Application.CutCopyMode = False
End SubEst-il possible de selectionner des cellules d'une ligne et de les coller à la suite sur la même ligne, ex:
(Cells A1, B1, C1, D1), à copier et à coller sur (cellsE1, F1, G1, H1) puis en (cellsI1, J1, K1, L1) etc ?
g
Bonjour
Tu devrais joindre ton fichier avec ce que tu as et ce que tu souhaites sur un exemple concret...
Bye !
Bonjours à tous,
Pour une simplification
Sub toutelaSemaine()
' Plage source à copier
Dim sourceRange As Range
Set sourceRange = ActiveSheet.Range("C126:F128")
' Plage de destination
Dim destRange As Range
Set destRange = ActiveSheet.Range("H126:Z128")
' Vérifier si la plage de destination est vide
If WorksheetFunction.CountBlank(destRange) = destRange.Cells.Count Then
' Copier la plage source vers la plage de destination
sourceRange.Copy destRange
End If
Application.CutCopyMode = False
End Subet pour l'autre demande
Sub CopierCollerLigne()
Dim ws As Worksheet
Dim rngSource As Range
Dim rngDestination As Range
Dim i As Integer
Dim colOffset As Integer
' Spécifiez la feuille de travail
Set ws = ThisWorkbook.Sheets("NomDeVotreFeuille")
' Spécifiez la plage source à copier (par exemple, A1:D1)
Set rngSource = ws.Range("A1:D1")
' Spécifiez la cellule de destination initiale (par exemple, E1)
Set rngDestination = ws.Range("E1")
' Spécifiez le décalage de colonne entre les collages successifs (par exemple, 4 colonnes)
colOffset = 4
' Copiez et collez la ligne dans des cellules adjacentes
For i = 1 To colOffset
rngSource.Copy
rngDestination.PasteSpecial xlPasteValues
Set rngSource = rngSource.Offset(0, colOffset)
Set rngDestination = rngDestination.Offset(0, colOffset)
Next i
Application.CutCopyMode = False
End SubM
Bonjour, merci c'est très clair, bien détaillé, ça va bien m'aider !!
M
Je confirme ça marche très bien, merci encore