Résolu VBA - copier coller en respectant les écarts de lignes

Margaux91

Nouveau membre
Bonjour,

Je suis débutante en VBA et aurai GRAND besoin de votre aide.
Je sors d'un logiciel un état de mes stocks, et dans cette état, les N° de référence Clients et Produits sont inscrits dans la même colonne A.

Les référence Clients sont indiquées en gras.
J'aimerai sortir ses références clients de la colonne 1 pour les coller dans la colonne B, sur la même ligne que celle où elles apparaissent à la base (elles sont séparées les unes des autres par les références des produits commandés, ce nombre de produits varie).
De plus, ces références clients doivent aussi être copier dans la colonne B et la ligne en-dessous de celle ou elles apparaissent.

Voici le code utilisé, que j'ai en partie trouvé sur internet et adapté à ma feuille :

Code:
Sub select_cellule_gras_ColonneA()
[COLOR=Green] 'adapté de: macro originale: SelectByValue
'auteur: Jacob Hilderbrand[/COLOR]
Dim Plg As Range
Dim Plg1 As Range
Dim Plg_OK As Range
Dim Cell As Object
Set Plg1 = ActiveSheet.Range("A1:A24566")
For Each Cell In Plg1
    If Cell.Font.Bold = True Then
        If Plg_OK Is Nothing Then
            Set Plg_OK = Range(Cell.Address)
        Else
            Set Plg_OK = Union(Plg_OK, Range(Cell.Address))
        End If
    End If
Next
Plg_OK.Select
Selection.Copy Destination:=ActiveCell.Offset(0, 1)
Selection.Copy Destination:=ActiveCell.Offset(1, 1)
Plg_OK.Clear
End Sub

Le copier coller fonctionne bien, mais lorsque les références sont copiées, le nombre de ligne qui devrait les séparé les unes des autres n'est pas respecté.

Y a-t-il un moyen sur excel de copier coller une sélection de cellule séparé en respectant leur disposition ligne par ligne ?

J'espère que j'ai été assez claire, merci à ceux qui ont lu ce message jusqu'au bout et merci d'avance pour vos réponse !!!

Margaux
 

zeb

Modérateur
Meilleure réponse
Salut,

Ouh qu'il est pas beau le code de Jacob Hilderbrand !
Code:
' Non :
If (condition) = True Then ..
Set x = Range(Cell.Address)
Objet.Select / Selection.Action
Dim Cell As Object ' doit contenir une cellule
' Oui :
If condition Then ..
Set x = Cell
Objet.Action
Dim Cell As Range ' doit contenir une cellule

-------------------------------------------------------------------------------------

Le plus gros problème, c'est quand même ton discours :
J'aimerai sortir ses références clients
-> Identifier les références
de la colonne 1
-> la colonne A
pour les coller dans la colonne B,
-> ok
sur la même ligne que celle où elles apparaissent à la base
-> qu'est-ce qu'une base ?
(elles sont séparées les unes des autres par les références des produits commandés, ce nombre de produits varie).
-> Bon. dont on ne fait rien
De plus, ces références clients doivent aussi être copier (sic)
->
dans la colonne B
-> ok
et la ligne en-dessous de celle ou elles apparaissent.


J'essaie de traduire :
Si la case de la colonne A (colonne 1) est en gras (ce qui identifie une réf.),
on recopie son contenu dans la cellule juste à droite (colonne B, même ligne)
et dans la cellule en dessous dans cette même colonne B.

Allons-y :
Code:
Dim cell As Range
For Each cell In Columns(1)
	If cell.Font.Bold Then
		cell.Offset(0, 1).Value = cell.Value
		cell.Offset(1, 1).Value = cell.Value
	End If
Next

Le code est bon : il fait ce que j'ai proposé.
Reste à savoir si ma "traduction" est bonne ;)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 100
Membres
1 586 287
Dernier membre
lucilleguffey
Partager cette page
Haut