Besoin d'aide pour programation VBA

  • Initiateur de la discussion Initiateur de la discussion casdale
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

casdale

Guest
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

}
 
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:
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:
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

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+
 
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

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
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Réponses
7
Affichages
308
Réponses
23
Affichages
488
Réponses
4
Affichages
551
Réponses
6
Affichages
563
Retour