Boucle - Copier/coller selon valeur

Bonjour Forum.

J'ai toujours du mal avec les boucles... je vais finir par comprendre. J'ai mis un exemple, mais je voudrais copier/coller une valeur si il trouve une valeur dans la colonne "B".

Si vous avez des questions, n'hésitez pas.

Merci d'avance pour votre aide

Vincent

Bonjour,

Ci-joint ton fichier .. avec la fameuse boucle ...

En espèrant que cela t'aide ...

Merci James. Il me reste à mettre dans dans mon vrai fichier, mais je devrai m'en sortir.

Encore une fois. Merci !

vinc87 a écrit :

Merci James. Il me reste à mettre dans dans mon vrai fichier, mais je devrai m'en sortir.

Encore une fois. Merci !

Content que cela corresponde à ton attente ...

Si tu as des difficultés pour l'adaptation au fichier réel ... il ne faut pas hésiter à revenir sur le Forum ...

Merci ... pour tes remerciements ...

Re-Bonjour James,

J'ai encore besoin de ton aide. J'ai copié collé ton code et j'ai simplement modifier le 23 pour 1000. Quand je roule la macro, il copie/colle bien le nom à gauche, mais il fait ne descend pas le nom après. Je te montre un fichier de ce qu'il fait. Comme s'il la valeur absolu du nom ce perdait...

Mon premier exemple n'était pas bon, car j'avais laissé vide sous le nom alors qu'il y a plein de textes... ça vient surement de là !

Voici mon code et un fichier.

Merci !

Dim c As Range

Dim rng As Range

Dim x As Long

Set rng = Range("B2:B1000")

For Each c In rng

If c.Value <> "" And c.Value <> "CAD" Then

x = Application.Match("CAD", Range(Cells(c.Row, 2), Cells(1000, 2)), 0) - 1

c.Copy Destination:=c.Resize(x).Offset(0, -1)

End If

Next c

End Sub

Re,

Je ne comprends pas quel est le problème ...

Peux-tu expliquer plus clairement ce qui ne fonctionne pas dans ton fichier réel ...

Oui, désolé.

En fait, ma macro copier/colle la valeur de B dans A donc A15=B15, A16 = B16 au lieu que mon nom soit recopier partout jusqu'à ma cellulaire dans A qui est Customer Total:

J'espère que je suis plus clair

Meric encore

Je suis en train de faire les tests et d'esseyer d'adapter le code.

En fait, il ne réagit pas pareil si la valuer est vide dans la colonne B (sous le nom) vs si la cellule contient du texte.

S'il la cellule est vide : il recopie mon nom parfaitement, sinon il prendre mon texte de la colonne B et la recopie dans le colonne A.

Merci encore pour ton aide !

Re,

Je comprends mieux le nouveau problème ...

Dis-moi ce qui permet de différentier le Nom à copier ... du Nom à ne pas copier ...

Merci !

Comment par "IN" ou "PY" ou c'est un nombre. Sinon je ne sais pas si c'est plus facile mais si dans la valeur de la colonne A équivalente contient la valuer "In" ou "PY" cela peut faire.

Exemple :

Client 1 - À copier

Py0011 - Ne pas copier

IN0005 - Ne pas copier

8787 - Ne pas copier

J'apprécie réellement ton aide.

Vincent

Bonjour vinc87,

Soit NomClient la variable qui contient le nom du client ; tu peux essayer ceci :

 Dim NomClient As String, chn As String
 NomClient = ... ' complète par ce que tu as déjà fait pour la boucle de lecture des noms

 chn = UCase$(Left$(NomClient, 2)) ' les 2 premiers caractères du nom, en majuscules
  If Not (IsNumeric(NomClient) Or chn = "PY" Or chn = "IN") Then
   ' Client à copier : nom n'étant pas un nombre et commençant ni par "PY", ni par "IN"
  End If

Je te laisse voir la suite avec James007.

Cordialement

Bonjour Vincent,

Est-ce-que tu as pu résoudre ton problème .... ou pas ...

Bonjour à vous deux,

Désolé pour le délai !! Je ne sais pas trop comment imbriqué les deux bouts de code :

Merci encore pour votre aide précieuse !

Vincent

La première partie de James :

Dim c As Range

Dim rng As Range

Dim x As Long

Set rng = Range("B2:B1000")

For Each c In rng

If c.Value <> "" And c.Value <> "CAD" Then

x = Application.Match("CAD", Range(Cells(c.Row, 2), Cells(1000, 2)), 0) - 1

c.Copy Destination:=c.Resize(x).Offset(0, -1)

End If

Next c

La deuxième de Dhany :

Dim NomClient As String, chn As String

NomClient = ... ' complète par ce que tu as déjà fait pour la boucle de lecture des noms

chn = UCase$(Left$(NomClient, 2)) ' les 2 premiers caractères du nom, en majuscules

If Not (IsNumeric(NomClient) Or chn = "PY" Or chn = "IN") Then

' Client à copier : nom n'étant pas un nombre et commençant ni par "PY", ni par "IN"

End If

Bonjour,

Ci-joint la Version 3 ...

Cela devrait maintenant être plus facilement adaptable à ton fichier réel ....

De la vrai magie

Merci encore à vous deux !

Bonne journée !

Ravi que cela corresponde à ton attente ...

Merci ... pour tes remerciements ...

Rechercher des sujets similaires à "boucle copier coller valeur"