Copier/coller sur la colonne suivante quand un mot est reconnu

Résolu/Fermé
julietter - 14 août 2015 à 11:27
NicolasVBA Messages postés 16 Date d'inscription vendredi 14 août 2015 Statut Membre Dernière intervention 4 septembre 2015 - 14 août 2015 à 14:23
Bonjour,
Je souhaiterais écrire une macro scruter la colonne "A" afin de voir si la chaine de caractère qui s'y trouve contient "*Chiffre d'affaires*" ou pas.
Si elle contient une valeur "*Chiffre d'affaires*" je souhaiterais "couper" tout le reste de la colonne et le coller dans la colonne suivante (commençant en haut de la feuille en B1), puis recommencer la même manipulation sur la colonne B et ainsi de suite pour qu'à chaque fois qu'une cellule contient "*Chiffre d'affaires*", tout le reste soit copié dans la colonne qui suit. Si cela peut aider, il y a à chaque fois un pas de 34 entre deux lignes contenant chiffre d'affaire, mais je n'arrive pas à faire comprendre à VBA qu'il faut coller dans la colonne suivante.
J'espère que je suis assez claire et que l'un d'entre vous pourra m'aider :)

Merci d'avance pour votre aide et bonne journée

A voir également:

1 réponse

NicolasVBA Messages postés 16 Date d'inscription vendredi 14 août 2015 Statut Membre Dernière intervention 4 septembre 2015 3
Modifié par NicolasVBA le 14/08/2015 à 14:27
Bonjour,

Voici un code qui fonctionne

Sub test()

'Déclaration de la variable qui comptera les colonnes, initialisation à 1

Dim colonne As Integer
colonne = 1

'Déclaration et initialisation de la variable qui renvoit le nombre total de ligne de la colonne A
Dim derlig As Integer
derlig = Range("A" & Rows.Count).End(xlUp).Row

'Un petit renvoi des familles qui permet de relancer la boucle à chaque changement de colonne
debutboucle:

'On boucle sur les ligne, de la seconde à la dernière
For i = 2 To derlig
    
    'Si la cellule contient "Chiffre d'Affaire", alors
    If Cells(i, colonne).Value Like "*Chiffre d'Affaire*" Then
    
        'On coupe la plage entre cette cellule et la dernière de la colonne
        Range(Cells(i, colonne), Cells(derlig, colonne)).Cut
        
        'On se décale d'une colonne via la variable
        colonne = colonne + 1
        
        'On colle sur la première cellule de la colonne suivante
        Cells(1, colonne).Select
        ActiveSheet.Paste
        
        'Juste pour optimiser la boucle, recalcule de la dernière ligne de la nouvelle colonne créée
        derlig = derlig - i + 1
        
        'Et on repart au début de la boucle, qui va maintenant tourner sur la colonne suivante
        GoTo debutboucle
        
    End If
    
Next

End Sub




La cuillère n'existe pas !
0
C'est parfait! Merci beaucoup :)
0
NicolasVBA Messages postés 16 Date d'inscription vendredi 14 août 2015 Statut Membre Dernière intervention 4 septembre 2015 3 > julietter
14 août 2015 à 14:23
De rien ! Petit exercice intéressant ! :-)
0