VBA - Problème pour trouver la dernière cellule non vide d'une colonne

Je pense que tout est possible. J'ai fait selon ce que j'ai compris : j'ai vu un bouton AJOUTER et des cases correspondants aux colonnes du tableau, le tour me semblait joué.

Que se passe-t-il en cas de multi ? Vous devez répéter la même entrée x fois ?

En cas d'activité Multi-marque, je dois avoir autant d'entrées que de marques liées à cette activité. Avec en plus des données qui vont être récupérées dans le tableau en colonne F

Il me faudrait un exemple parce que ce n'est pas clair de mon côté. Tout ce que j'ai, c'est le fichier que je vous ai renvoyé. Et je ne parviens pas bien à comprendre.

Voici le vrai fichier.

Quand je suis en mono-marque pas de soucis par contre en multi (j'ai mis mon bout de code en mode texte dans la macro) je n'arrive pas à faire en sorte que ça colle à la suite dans ma base de données. parfois quand je teste le mode multi ça colle à la suite, parfois 100 lignes plus bas...

Non mais expliquez moi. Je suis peut-être demeuré mais je ne vois pas de Multi et je ne sais pas ce qu'il faudrait faire quand bien même j'en verrais.

Il suffit juste de m'expliquer une fois l'opération avec tout l'information utile...

Pardon j'ai oublié de préciser. Il faut cliquer sur le mode Multi pour le "débloquer" et arriver sur cette vue :

image

Une fois ici il faut choisir les SFM(en gros un code marque) dans la colonne F pour ajouter toutes les marques necessaires

D'accord, et cette opération n'est pas automatisable ? Elle passe nécessairement par une saisie supplémentaire ?

Et donc sont dupliquées les infos du formulaire exceptées celles des 4 ou 3 colonnes (SFM à % ou DIVISION) qui sont individualisées ?

Oui elle passe nécessairement par une saisie supplémentaire car dans ce tableau Multi, nous allons également renseigner un pourcentage en colonne I. Celui ci permet de répartir la dépense par marque pour une même activité.

Exemple : pour un salon nous louons un stand pour mettre en avant 3 marques. Cependant la marque 1 prend plus d’espace que la marque 2 et 3, donc :
Marque1 : 50%, Marque2 : 30% Marque3 : 20%

Dans le cas d'un mono marque :

Toutes les infos proviennent du formulaire et le % = 100%

Dans le cas d'un Multi-marque

Les infos de SFM, Marques, Division et % proviennent du second tableau, le reste provient du formulaire.

Salut Buzz,
Salut l'équipe,

j'ai, comme souvent, supprimé les listes de validation Excel en [B5] et [F:F] pour laisser VBA gérer l'affaire...
Qu'est-ce que faisait cette liste de validation en [B6] ?
Ainsi que je le disais, s'il n'y a pas d'autres surprises, ce que je te donnais tout à l'heure fonctionne très bien

Sub Copier_Coller_Données_Formulaire()
'
Dim sWkS As Worksheet, sWkBDD As Worksheet
Dim iRow%, iCol%
'
Set sWkS = Worksheets("Formulaire Saisie")
Set sWkBDD = Worksheets("Base de données")
Application.EnableEvents = False
Application.ScreenUpdating = False
'
If sWkS.[F4] <> "" Or (sWkS.[B5] <> "" And sWkS.[B5] <> "MULTI") Then
    iRow = sWkS.Columns("K").Find(what:="*", lookat:=xlPart, LookIn:=xlValues, searchdirection:=xlPrevious).Row - 2
    iCol = sWkS.Cells(2, Columns.Count).End(xlToLeft).Column - 10
    sWkBDD.Range("A" & sWkBDD.Range("A" & Rows.Count).End(xlUp).Row + 1).Resize(iRow, iCol).Value = sWkS.Range("K3").Resize(iRow, iCol).Value
    MsgBox "Activité" & IIf(sWkS.[B5] = "MULTI", "s", "") & " ajoutée" & IIf(sWkS.[B5] = "MULTI", "s", "") & " à la base de données MKT !"
    If sWkS.[B5] = "MULTI" Then
        sWkS.Range("F4").Resize(iRow, 4).Value = ""
    Else
        sWkS.[B5] = ""
    End If
End If
'
Application.ScreenUpdating = True
Application.EnableEvents = True
'
End Sub

Á tester, comme on dit...

8buzz.xlsm (60.76 Ko)


A+

Buzz,

Voici le fichier retourné avec ce que j'ai compris du besoin, et en supprimant le tableau intermédiaire (dont la seule utilité serait d'accélérer l'exécution de l'archivage, qui ne devrait pas être très long compte tenu du besoin).

J'ai ajouté des noms, modifié des noms (feuilles, tableaux, colonnes), mis la plage Multi sous forme de tableau, déplacer quelques colonnes pour faciliter l'exercice.

Cdlt,

Bonjour à tous !

Merci Curulis pour ta solution, elle fonctionne en effet mais n'est pas des plus pratique à l'utilisation ... dans mon cas en tout cas.

Par contre la solution de 3GB est top, c'est exactement ce dont j'avais besoin et tu as même était plus loin que mon besoin initial donc vraiment un grand merci !

Je me suis juste permis d'enlever le Reset qui s'opère à la fin de la macro Archivage car de temps en temps nous rentrerons plusieurs activités pour une même marque ou liste de marques, et le fait de devoir tout re-remplir à nouveau n'est pas forcément pratique.

Je tiens sincèrement à tous vous remercier pour votre aide et m'excuse si mes explications n'était pas toujours très claires.

Bonne journée vous tous !

Jérémy

Bonjour Buzz,

Super !

Il manque plus que quelques validations dans les cellules de saisie (forcer texte ou nombres) et une petite protection de feuille pour pouvoir protéger les formules d'une part et d'autre part utiliser la tabulation pour plus facilement se déplacer d'une case à l'autre.

Bonne journée à toi aussi,

Rechercher des sujets similaires à "vba probleme trouver derniere vide colonne"