Pb ecriture en VBA pour faire une "boucle" simple avec condition

Bonjour à tous, je retouche petit à petit au VBA et j'ai tout oublié... et j ne parviens alors à faire ce dont j'ai besoin.

Voici ce que j'ai écrit en VBA (mais il y a une ou plusieurs erreurs que je n'identifie pas ...)

Sub copier_coller_texte()
Dim c As Range

With ActiveSheet
' j'efface le contenu du tableau final en enlevant toutes les données
.Range("B3:M9").ClearContents

For Each c In Range("B12:M18")
If c <> "" Then c.Copy
Cells(c.Row - 9, c.Column).PasteSpecial Paste:=xlPasteValues
Next

End With
End sub

Je souhaite simplement faire un copier - coller de valeurs d'un tableau à un autre identique, mais en ne copiant uniquement les cellules qui ont du texte à l'intérieur.

Dans le tableau de recopie, cela m'éviterait alors de devoir effacer le contenu de chaque celules vide afin que le texte puisse déborder sur les cellules vides.

Le tableau aura beaucoup de ligne, du coup ca ira plus vie si elle "copie-colle en valeur" uniquement les cellules souhaitées (texte).

Pour exemple et pour comprendre, je vous joint un tableau alégé , dont il faut copier-coller uniquement les valeurs textes dans un autre tableau identique vide.

Merci à vous pour vos conseils et votre aide.

bonjour,

non testé, mais cette partie-ci ne me semble pas correcte

For Each c In Range("B12:M18")
If c <> "" Then c.Copy
Cells(c.Row - 9, c.Column).PasteSpecial Paste:=xlPasteValues
Next

il n'y a que le C.copy qui dépend de la condition, le pastespecial est toujours fait (et colle la dernière valeur copiée). donc je pense que ton code devrait être celui-ci :

For Each c In Range("B12:M18")
If c <> "" Then
  c.Copy
  Cells(c.Row - 9, c.Column).PasteSpecial Paste:=xlPasteValues
end if
Next

Bonjour à tous,

Sub Copier_coller_texte_V2()
 Dim c As Range
  With ActiveSheet
  .Range("B3:M9").ClearContents
    For Each c In .Range("B12:M18")
     If c <> "" Then c.Offset(-9, 0).Value = c.Value
    Next
  End With
End Sub

Cordialement,

Salut dm83,
Salut l'équipe,

plus simple, surtout si tu as beaucoup de ligne de ce style...

tTab = Range("B12:M18").Value
Range("B3:M9") = tTab


A+

Merci beaucoup à vous tous !

La 1ere solution me convient parfaitement !

apres plusieurs années d'absences pour ma part, je vois que vosu etes tojours actif sur ce forum , c'est génial.

Peut-etre à très vite pour de nouvelles résolutions de problèmes...

Rechercher des sujets similaires à "ecriture vba boucle simple condition"