Tirer des colonnes vers le bas ou étendre une suite

Bonjour, je crois qu'un poste assez similaire existe déjà mais celui ci est un peut différent.

J'ai 4 colonnes de A à D, dont les valeur commencent toutes à la ligne 2. En A2 B2 C2 D2 on retrouve 1; en A3 B3 C3 D3 on retrouve 2 et ainsi de suite.

Plutôt que d'utiliser le "plus" afin d'étendre la série comme cela avec une souris vers le bas, j'aimerais le faire avec une macro, qui va être affecté à un bouton. En cliquant sur ce bouton, la série va s'étendre toute seule, un à un. Une fois que j'ai cliquer je recommence pour obtenir 3, puis 4 ... ceci dans toute les colonnes, en même temps.

Je n'y arrive pas du tout, car je suis novice et maintenant bloqué. Pouvez-vous m'aider svp ?

Merci beaucoup pour vos réponses par avance.

Cordialement

Bonjour,

Supposons que vous ayez un tableau structuré (de 4 colonnes) nommé TAB. Il ne faut pas de lignes vides. La dernière ligne est la dernière suite de valeurs :

Sub incrementer()

dim dl&

dl = range("TAB").rows.count
range("TAB").rows(dl+1) = range("TAB")(dl) + 1

end sub

Vous copiez ce code dans un module normal (onglet développeur, menu insertion, module).

Ensuite vous ajoutez un bouton (toujours depuis l'onglet développeur).

Vous faites clic droit sur ce bouton, affecter une macro, vous cliquez sur votre macro. Au clic, les valeurs devraient être incrémentées.

Cdlt,

Bonjour 3GB, merci pour votre réponse.

Au moment d'appuyer sur le bouton, un message d'erreur 1004 apparait "La méthode range de l'objet _global a échouée".

C'est peut être de mon coté, car je ne trouve pas le menu insertion dans l'onglet développeur, j'ai que insérer ou mode de création.

Je suis donc aller sur macro, pas à pas détailler ou modifier, puis j'ai insérer le code. J'ai renommé et je l'ai affecté à un bouton que j'ai crée, mais cela n'ai pas fonctionné.

Si cela peut aider, mes colonnes vont de A1 à D1 et se nomment respectivement Nom; id; choix; et cout.

Merci !

Cordialement

En fait, le menu contextuel apparait quand on ouvre l'éditeur de code visual basic. Vous avez créé un tableau et l'avez renommé TAB ?

Voici un second essai :

Sub incrementer()

Dim dl&, tb

dl = Range("TAB").Rows.Count
tb = Application.Transpose(Application.Transpose(Range("TAB").Rows(dl)))
For i = 1 To UBound(tb)
    tb(i) = tb(i) + 1
Next
Range("TAB").Rows(dl + 1) = tb

End Sub

Cdlt,

Non du tout j'ai créer un tableau simple et j'ai nommé les colonnes, étant novice je ne sais pas trop comment nommer un tableau. Sinon entrer les valeurs dans chaque cellule en A1 B1 C1 D1 ne fonctionne pas ?

cdlt

Si ça fonctionne mais c'est toujours mieux d'avoir un tableau...

Pour créer un tableau, a priori sur votre version : Accueil, mettre sous forme de tableau. Ensuite, vous aurez peut-être un onglet création qui apparaitra et vous permettra de le renommer.

Sans tableau :

Sub sanstab()

Dim dl&, tb

dl = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To 4
    Cells(dl + 1, i) = Cells(dl, i) + 1
Next i

End Sub
image

Je tombe sur ce résultat, je vous envoie une image. C'est étrange je n'arrive pas à comprendre d'ou provient le problème.

cdlt

Pour que je comprenne moi aussi, il faut que vous me disiez sur quelle ligne se trouve l'erreur (elle est surlignée en jaune dans le code).

Un essai qui devrait marcher :

Sub sanstab()

Dim dl&

with activesheet
    dl = .Cells(.Rows.Count, 1).End(xlUp).Row
    For i = 1 To 4
        .Cells(dl + 1, i) = .Cells(dl, i) + 1
    Next i
end with

End Sub

Cela fonctionne génial ! Dernier point, si on souhaite que dans les colonnes B et C les valeurs soient les suivantes :

image

En B5 et C5 je souhaite que la série POMME3 et HARICOTS3 continue, en POMME4 et HARICOTS4, et ainsi de suite, un peut comme les chiffres, comment faire ?

Merci beaucoup c'est déjà top, je touche au but !

Essayez avec ce code :

Sub sanstab()

Dim dl&

with activesheet
    dl = .Cells(.Rows.Count, 1).End(xlUp).Row
    For i = 1 To 4
        if not isnumeric(.cells(dl, i)) then
            .Cells(dl + 1, i) = replace(.Cells(dl, i), Numero(.Cells(dl, i)), "") &  Numero(.Cells(dl, i)) + 1
        else
            .Cells(dl + 1, i) = .Cells(dl, i) + 1
        end if
    Next i
end with

End Sub

Function Numero(chaine as string) as long
Dim reg As object
Set reg = CreateObject("vbscript.regexp")
With reg
    .Pattern = "\d+$"
    Numero = clng(.execute(chaine)(0))
end with
end function

Cdlt,

Je tombe sur le meme résultat, mais avec une différence :

image

Il va sauter la ligne avec le même message d'erreur au niveau de du type, puis lorsque je vais réappuyer sur le bouton, il y aura un décalage comme sur la photo.

cdlt

Ca marche bien de mon côté !

Quand vous avez essayé la première fois, il y a eu un bug (j'ai laissé un end sub au lieu de mettre end function ). Ca a arrêté la procédure et laissé des cellules vides.

Ensuite, quand vous avez repris sur ces cellules vides, et bien ça a repris normalement mais en considérant que la valeur précédente était 0.

Effacez tout sauf la ligne 1, pomme1, ... et vous verrez, en veillant à remplacer la dernière ligne du code (le dernier end sub) par end function

Cela fonctionne ! merci beaucoup pour vos informartions et vos explications c'est très clair pour moi !

Rechercher des sujets similaires à "tirer colonnes bas etendre suite"