Besoin d'aide pour programation VBA

casdale

XLDnaute Nouveau
Bonjour, je recherche a faire une macro mais j'ai des difficulté en VBA. je vous ai écrit le programme pouvez vous me le réécrire en vba svp. Je vous explique mon problème je souhaité parcourir un tableau qui se situe dans une autre feuille (numéro caisse) et comparé la colonne C de celui ci avec une cellule (B5) de ma propre feuille. Si cette valeur est égale je souhaite copié les informations de ma ligne de mon tableau de la feuille numéro de caisse dans ma propre feuille. et de passée ainsi de suite a la ligne suivante jusqu'à la fin du tableau.

on est dans la feuille caisse1

i=5;
x=9;

//ligne
tant que i {
if (la cellule Ci de la feuille numero caisse) == (nombre dans B5 de cette feuille) {
selectionne Ai et Bi de la feuille numero de caisse;
copier Ai et Bi dans cette feuille en Ax et Bx de ma propre feuille
x++; aller a la ligne suivante
}

i++ passé a l'élément suivant

}
 

fhoest

XLDnaute Accro
Re : Besoin d'aide pour programation VBA

Bonjour ,
tu programme apparemment en c++, le vb est + simple
Code:
'déclaration des variables
Sub test()

Dim i,x As Integer
x=9
For i = 1 To 5
If Sheets("numero caisse").Range("c" & i) = Sheets("numero caisse").Range("B5") Then
sheets("caisse1").Range("A" & x) = Sheets("numero caisse").Range("A" & i)
sheets("caisse1").Range("B" & x) = Sheets("numero caisse").Range("B" & i)
x=x+1
End If
Next i
End Sub

voila A++
 
Dernière édition:

sigismond

XLDnaute Occasionnel
Re : Besoin d'aide pour programation VBA

Bonjour le forum, casdale

Avec tes explications je ne suis pas sûr d'avoir tout compris.

essaye ceci :
VB:
Dim i As Integer, x As Integer
i = 5
x = 9

While Not Worksheets("numero_caisse").Cells(i, 3).Value = ""
    If Worksheets("numero_caisse").Cells(i, 3).Value = Worksheets("caisse_1").Cells(5, 2).Value Then
        Worksheets("caisse_1").Cells(x, 1).Value = Worksheets("numero_caisse").Cells(i, 1).Value
        Worksheets("caisse_1").Cells(x, 2).Value = Worksheets("numero_caisse").Cells(i, 2).Value
        x = x + 1
    End If
Next i

[edit] Bonjour fhoest

Bonne journée.

Sigismond
 
Dernière édition:

casdale

XLDnaute Nouveau
Re : Besoin d'aide pour programation VBA

Merci pour votre aide,mais cela marche pas spécialement pour que cela soit plus simple a vous expliqué je vous joint un petit fichier, je souhaite remplir la feuille caisse 1 automatiquement en comparent la cellule B5 qui est égal a 1 au cellule de la colonne C de la feuille numéro de caisse. Dans le cas ou c'est le même chiffre, il faut copie la colonne A et B de la feuille numero caisse a la feuille caisse1. Je désire aussi que cette fonction s'exécute jusqu'à la fin du tableau de la feuille numéro de caisse
 

Pièces jointes

  • liste des complement prog.zip
    13.6 KB · Affichages: 34

fhoest

XLDnaute Accro
Re : Besoin d'aide pour programation VBA

Bonsoir,
si j'ai compris essais ceci:
Code:
Sub test()
Dim c As Range
Dim x As Integer
Dim drligne As Long

drligne = Sheets("Numero caisse").Range("c65000").End(xlUp).Row

x = 9
For Each c In Sheets("Numero caisse").Range("c5:c" & drligne)
If c = Sheets("Caisse 1").Range("B5") Then
Sheets("Caisse 1").Range("A" & x) = Sheets("Numero caisse").Range("A" & c.Row)
Sheets("Caisse 1").Range("B" & x) = Sheets("Numero caisse").Range("B" & c.Row)
x = x + 1
End If
Next c

End Sub
si pas n'hésite pas a reposter
A+
 

sigismond

XLDnaute Occasionnel
Re : Besoin d'aide pour programation VBA

Finalement j'avais bien compris
Mais j'avais fait une faute de syntaxe...
et puis je m'arrêtais au premier blanc colonne C et d'après l'exemple il faut tester la colonne A.

ça marche il ne te reste plus qu'a poursuivre avec Caisse_2, Caisse_3...

Attention j'ai modifié le nom des feuilles : j'ai un tic : je ne supporte pas les espaces dans les noms de feuille et les noms de fichier.

Sigismond
 

Pièces jointes

  • liste des complement prog01.zip
    13.8 KB · Affichages: 28

casdale

XLDnaute Nouveau
Re : Besoin d'aide pour programation VBA

Merci beaucoup sigismond cela fonctionne parfaitement. Encore une précision pour m'évite de crée X macro Peut ton modifié le nom du fichier dans le code :

If Worksheets("numero_caisse").Cells(i, 3).Value = Worksheets("caisse_1").Cells(5, 2).Value Then

par

If Worksheets("numero_caisse").Cells(i, 3).Value = Worksheets("caisse_ Cells(5, 2) ").Cells(5, 2).Value Then

merci par avance
 

sigismond

XLDnaute Occasionnel
Re : Besoin d'aide pour programation VBA

Je comprends ce que tu veux faire Casdale
mais il y a une faille de logique dans ton raisonnement

Si tu as trois feuilles Caisse_1, Caisse_2 et Caisse_3 avec en B5: respectivement 1, 2 et 3
il est possible de modifier ta formulation pour que la syntaxe soit bonne
sauf que le programme ne pourra pas choisir quelle feuille prendre, il peut prendre les trois, la syntaxe est bonne mais tu dois lui indiquer lequel.
Tu peux l'indiquer de différente façon :
  • En dur, c'est ce que j'ai fait : "Caisse_1", "Caisse_2"...
  • En sélectionnant la feuille préalablement et en utilisant un adressage implicite

Avec le code modifié comme suit :

VB:
Do While Not Worksheets("numero_caisse").Cells(i, 1).Value = ""     '___________arrêt sur la première ligne vide colonne A
    If Worksheets("numero_caisse").Cells(i, 3).Value = Cells(5, 2).Value Then
        Cells(x, 1).Value = Worksheets("numero_caisse").Cells(i, 1).Value
        Cells(x, 2).Value = Worksheets("numero_caisse").Cells(i, 2).Value
        x = x + 1      '_______on passe à la ligne suivante dans "caisse_1"
    End If
    i = i + 1        '_______on passe à la ligne suivante dans "numero_caisse"
Loop


Adressage explicite (complet) : Worksheets("caisse_1").Cells(5, 2).Value
Adressage implicite : Cells(5, 2).Value (la feuille n'est pas spécifiée, l'interpréteur considère que l'adresse concerne la feuille en cours)

L'adressage implicite est généralement déconseillé car plus difficile à débugger.

Dans ton problème je suppose que tu vas remplir toutes tes feuilles en séquence
alors je te propose une boucle k comme suit :



Bonne soirée

Sigismond
 

Pièces jointes

  • liste des complement prog03.zip
    16.4 KB · Affichages: 32

Discussions similaires

Réponses
2
Affichages
196

Statistiques des forums

Discussions
312 489
Messages
2 088 851
Membres
103 974
dernier inscrit
chmikha