VBA copier des infos d'un tableau à un autre avec condition

Fermé
danette26 - Modifié par danette26 le 23/05/2015 à 15:15
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 26 mai 2015 à 08:58
Bonjour tout le monde,

Je suis débutant sur VBA et ai quelques problème pour mettre en place ma macro.

Mon objectif : J'ai un premier onglet avec plein de données (Inventaire), et un second (Information) où j'aimerais reporter des lignes de l'inventaire suivant une conditions.

Mon avancé : proche du néant :)
Non j'ai commencé un petit à écrire la Macro. J'ai défini la variable (celle qui fixe ma condition) et commencé à faire la boucle avec do loop (pour que, tant que ma condition soit vrai les itérations continuent).

Mon problème ou plutôt mes problèmes : Je ne sais pas comment écrire les instructions dans la boucle do loop (ce qui finalement est le plus important).
En gros j'aimerais écrire :
"Dés que la condition est vrai dans la colonne A de la feuille inventaire alors recopié l'information de la colonne C (colonne qui se trouve toujours dans l'onglet inventaire) dans la colonne B de la feuille Information".


Voici la macro que j'ai commencé à écrire :
Sub Reporting_inventaire()

Sheets("Informations").Select
Dim entrepot As Integer
entrepot = Cells(3, 4)


Sheets("Inventaire").Select
Do While i = entrepot

i = Columns("A:A")

Loop


End Sub


En vous remerciant par avance de votre aide.

A bientôt
A voir également:

5 réponses

ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
23 mai 2015 à 15:13
Salut,
On pourrait avoir un exemple de fichier sur cjoint.com pour mieux visualiser la situation ?
1
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
Modifié par ozone_ le 23/05/2015 à 16:00
Voilà une solution :
https://www.cjoint.com/c/EExp74BhZwW

Y'avais surement possibilité de le faire sans macro mais c'est pas trop dans mes cordes.

1f u c4n r34d th1s u r34lly n33d t0 g37 l41d !
1
danette26 Messages postés 3 Date d'inscription samedi 23 mai 2015 Statut Membre Dernière intervention 25 mai 2015
25 mai 2015 à 12:36
Merci Ozone, j'ai réussi À l'adapter dans mon cas.
Par contre j'ai un autre problème que je pensais résoudre beucoup plus facilement.
Lorsque je sors l'inventaire en cliquant sur le bouton j'aimerais que les francais et islandais n'apparaissent pas quelle que soit la ville choisie:

Je pensais juste mettre quelque chose du genre
...
If worksheets("Inventaire").cells(i,5) <> "islandais".value And worksheets("Inventaire").cells(i,5)<> "francais".value then
...
end if
...


pour les valeurs islqndqis et francais j' fait faire une référence à des cellules fixes au lieu d'écrire les noms en toutes lettres.
Mais je me rends compte que quelque chose ne plqit pas à VBA.

Aurais-tu une solution pour ce problème ?

Merci par avance pour ton dévouement.
0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
Modifié par ozone_ le 25/05/2015 à 13:02
La condition c'est :
If Cells(2, 4) = Worksheets("Inventaire").Cells(i, 1) And _
        Worksheets("Inventaire").Cells(i, 4) <> "Islandais" And _
        Worksheets("Inventaire").Cells(i, 4) <> "Francais" Then


C'est bien sur Cells(i,4) et non (i,5) car c'est la 4e colonne, y'a pas de colonne 5.
De plus le travail sur un texte comme "islandais" exclu le besoin d'avoir .value à la suite.

Soit le tout :
Sub trier()
    Dim i, y As Integer
    y = 5
    Range("B5:D100").ClearContents
    
    For i = 2 To 100
        If Cells(2, 4) = Worksheets("Inventaire").Cells(i, 1) And _
        Worksheets("Inventaire").Cells(i, 4) <> "Islandais" And _
        Worksheets("Inventaire").Cells(i, 4) <> "Francais" Then
            Cells(y, 2) = Worksheets("Inventaire").Cells(i, 2)
            Cells(y, 3) = Worksheets("Inventaire").Cells(i, 3)
            Cells(y, 4) = Worksheets("Inventaire").Cells(i, 4)
            y = y + 1
        End If
    Next

End Sub
0
danette26 Messages postés 3 Date d'inscription samedi 23 mai 2015 Statut Membre Dernière intervention 25 mai 2015
25 mai 2015 à 13:28
Parfait je te remercie.
En fait je me suis rendu compte que c'est ce que j'avais fait, mais lorsque je faisais appel à une feuille j'oubliais une lettre dans le nom de la feuille. Il faut rester rigoureux !!!

Merci d'avoir pris de ton temps pour m'aider.

A la prochaine certainement. ;)
0
danette26 Messages postés 3 Date d'inscription samedi 23 mai 2015 Statut Membre Dernière intervention 25 mai 2015
23 mai 2015 à 15:31
Voilà j'ai créé un nouveau fichier beaucoup plus simple et qui me permettra de comprendre vos conseils.

https://www.cjoint.com/c/EExpzWq9EOQ

Dans ce cas je veux en fonction de la ville sélélectionné que les personnes se mette dans le tableau de la feuille "Information" (pas sûr d'avoir était bien clair).

SI je reprends ma première Macro que j'adapte à ce nouveau fichier ca donnerait :

Sub Reporting_inventaire()

Sheets("Informations").Select
Dim ville As Integer
ville = Cells(3, 4)


Sheets("Inventaire").Select
Do While i = ville

i = Columns("A:A")

Loop


End Sub
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 23/05/2015 à 16:05
Bonjour

Un autre petit exemple avec des explications
https://www.cjoint.com/?3ExqespzI6e

Cdlmnt
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
26 mai 2015 à 08:58
Bonjour tout le monde,
encore une autre ;o)
la macro se déclenche sans bouton au changement dans D2
https://www.cjoint.com/?3EAi541SeA1

0