Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

programme vba lancé par macro

  • Initiateur de la discussion Initiateur de la discussion polyteis
  • 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 !

polyteis

XLDnaute Occasionnel
Bonjour à toutes et tous

j'ai un fichier contenant 2 onglets.
l'onglet INFO, dans lequel je place les résultats d'une extraction , avec en dernière colonne un test, au fur et à mesure que les semaines passent ce fichier va s'allonger, en nombre de lignes.
j'aimerai que dans l'onglet TAB, s'inscrivent quand j'appuie sur un bouton de commande, toutes les lignes de l'onglet INFO, dont le résultat sera symbolisé par l'émoticone souriant.


Merci pour vos réponses
 

Pièces jointes

Re : programme vba lancé par macro

bonjour


merci beaucoup, cela fonctionne bien.
j'ai rebaptisé le bouton, et les noms des onglets et cela fonctionne toujours

Pouvez vous m'expliquez les 2 lignes suivantes :
Range("B12:J" & Range("B65535").End(xlUp).Row + 1).ClearContents
derligne = Range("B65535").End(xlUp).Row + 1


et encore merci
 
Re : programme vba lancé par macro

Re,
Pouvez vous m'expliquez les 2 lignes suivantes :
Range("B12:J" & Range("B65535").End(xlUp).Row + 1).ClearContents
derligne = Range("B65535").End(xlUp).Row + 1

le demande était:
au fur et à mesure que les semaines passent ce fichier va s'allonger, en nombre de lignes.
étant donné l'allongement hebdomadaire, la feuille destinée à recevoir les données est vidée à chaque utilisation de la macro dans le but d'éviter de re-re-re-remettre des lignes qui ont déjà été transférées auparavant
Range("B12:J" & Range("B65535").End(xlUp).Row + 1).ClearContents
la procédure s'allonge d' une fraction de seconde; c'est imperceptible

derligne = Range("B65535").End(xlUp).Row + 1 pour calculer le numéro de ligne de destination

à+
Philippe
 
Re : programme vba lancé par macro

bonjour et encore merci,
Ta fonction fonctionne bien,
je l'ai dupliqué pour qu'elle analyse toujours le même onglet "tb", et recherche la valeur j.
cette valeur est en colonne 10,11, et 12.

With Sheets("INFO")
For i = 3 To .Range("A6535").End(xlUp).Row
If .Cells(i, 10) = "J" Then
.Range(.Cells(i, 1), .Cells(i, 9)).Copy Destination:=Sheets("tb").Cells(derligne, 2)
derligne = derligne + 1
End If
Next i
End With

dans ton exemple valable pour la colonne 10, tu copies tous les éléments de la ligne sélectionnée jusqu'à la colonne 10,
comment faire pour l'analyse colonne 11
ou je désire l'affichage tous les éléments de la ligne sélectionnée jusqu’à' la colonne 9 et le résultat de la colonne 11
et même principe pour l'analyse 12.

ma seconde interrogation est la suivante For i = 3 To .Range("A6535").End(xlUp).Row
on doit lire A6535 ou A65535


encore merci
 
Re : programme vba lancé par macro

Re-Bonjour,

If .Cells(i, 10) = "J" Then
ci-dessus, le test s'effectue sur la colonne 10
il suffit de remplacer 10 par le numéro de la colonne dans laquelle on veut faire le test

.Range(.Cells(i, 1), .Cells(i, 9)).Copy Destination:=Sheets("tb").Cells(derligne, 2)
dans la ligne ci-dessus, on copie les données de la ligne jusqu'à la colonne 9 si tu veux copier au-delà,
Cells(i, 9).Copy
il suffit de modifier le 9

comment faire pour l'analyse colonne 11
il suffit de remplacer 9 par 11 dans ----> If .Cells(i, 10) = "J" Then

on doit lire A6535 ou A65535
c'est une vieille habitude qui a été prise, en fait sur la version Excel 2003, chaque feuille pouvait contenir 65536 lignes
la version Excel 2007 va jusqu'à 1048576 lignes

à+
Philippe
 
Dernière édition:
Re : programme vba lancé par macro

bonsoir,

j'avais compris le principe de ta fonction, je l'ai bien adapté.
Dans mon nouveau dossier j'ai 4 onglets INFO - tb - tb1 - tb2
avec ta macro adaptée dans chacune des feuilles tb, tb, tb2

je pense que je me suis mal exprimé, donc je retente :

résultat attendu pour l'analyse du j en colonne 10 du fichier info
c'est le transfert des colonnes ( a, b,c,d,e, f,g,h,i,j) sur le l'onglet tb à partir de la colonne B12,
cela fonctionne

résultat attendu pour l'analyse du j en colonne 11 du fichier info
c'est le transfert des colonnes ( a, b,c,d,e, f,g,h,i,k) sur l'onglet tb1 à partir de la colonne B12

résultat attendu pour l'analyse du j en colonne 12 du fichier info
c'est le transfert des colonnes ( a, b,c,d,e, f,g,h,i,L) sur l'onglet tb2 à partir de la colonne B12

****************************
est que je peux remplacer dans ta fonction la valeur 65535 par 1048576

merci de prendre du temps pour moi
 
Re : programme vba lancé par macro

Re,

Code:
Private Sub CommandButton1_Click()
Sheets("tb").Range("B12:K" & Sheets("tb").Range("B65535").End(xlUp).Row + 1).ClearContents
Sheets("tb1").Range("B12:K" & Sheets("tb1").Range("B65535").End(xlUp).Row + 1).ClearContents
Sheets("tb2").Range("B12:K" & Sheets("tb2").Range("B65535").End(xlUp).Row + 1).ClearContents
With Sheets("INFO")
    For i = 3 To .Range("A1048576").End(xlUp).Row
        If .Cells(i, 10) = "J" Then
            derligne = Sheets("tb").Range("B1048576").End(xlUp).Row + 1
            .Range(.Cells(i, 1), .Cells(i, 9)).Copy Destination:=Sheets("tb").Cells(derligne, 2)
            .Cells(i, 10).Copy Destination:=Sheets("tb").Cells(derligne, 10)  ' copie de la cellule en colonne J
        End If
        If .Cells(i, 11) = "J" Then
            derligne = Sheets("tb1").Range("B1048576").End(xlUp).Row + 1
            .Range(.Cells(i, 1), .Cells(i, 9)).Copy Destination:=Sheets("tb1").Cells(derligne, 2)
            .Cells(i, 11).Copy Destination:=Sheets("tb1").Cells(derligne, 10)  ' copie de la cellule en colonne K
        End If
        If .Cells(i, 12) = "J" Then
            derligne = Sheets("tb2").Range("B1048576").End(xlUp).Row + 1
            .Range(.Cells(i, 1), .Cells(i, 9)).Copy Destination:=Sheets("tb2").Cells(derligne, 2)
            .Cells(i, 12).Copy Destination:=Sheets("tb2").Cells(derligne, 10)  ' copie de la cellule en colonne K
        End If
    Next i
End With
MsgBox ("La répartition est terminée")
End Sub


voir fichier joint

à+
Philippe
 

Pièces jointes

Dernière édition:
Re : programme vba lancé par macro

bonsoir,

j'ai essayé de t'imiter en adaptant ta toute première macro , mais cela bug, .....

c'est toujours le même principe je dispos d'un onglet contenant une extraction et je tente de distribuer, repartir l'ensemble des données contenus dan le tableau sur différents onglets
ici dans l'avenir, je disposerai :
d'un onglet nommé INFDEP56
et de 60 onglets nommé de SO01 à SO60

le principe, testé la condition du centre financier et transférer la ligne si le test est vrai
ex:
je teste dans le fichier infdep56 la valeur SO09, si c'est bon je transfert la ligne dans l'onglet SO09
je pense à un bouton par onglet SOxx

si tu peux me faire un exemple de macro, que j'adapterai sur chacune des 60 feuilles

un grand merci d'avance
 

Pièces jointes

Re : programme vba lancé par macro

Re- bonjour
je teste dans le fichier infdep56 la valeur SO09, si c'est bon je transfert la ligne dans l'onglet SO09
cette valeur SO09, il faut la tester par rapport à quoi ?????


je pense à un bouton par onglet SOxx
Quelle complication !!!!!!!!!!!!!!!!!!!!!!! 😕



voir fichier joint

à+
Philippe
 

Pièces jointes

Re : programme vba lancé par macro

bonjour

merci de te penser sur ce probleme
le but est le suivant
dans une extraction, il y aura les 60 centre financiers ( s001 à so60)
je désire rapatrier dans chacun des onglets les lignes complète correspondant a leur centre

j'imagine que tu vois une seule macro qui réparti tranquillement les données
j'ai peur que cela soit lent ,....................
et je ne veux pas que tu te "tapes" à écrire les 60 boucles ........

c'est déjà plus que sympa de te penser sur mes demandes.
 
Re : programme vba lancé par macro

Re,
j'imagine que tu vois une seule macro qui réparti tranquillement les données
j'ai peur que cela soit lent ,....................
et je ne veux pas que tu te "tapes" à écrire les 60 boucles ........
une autre manière de procéder ........ sans pour autant se taper les 60 boucles

à+
Philippe

Edit:
je serai absent jusqu'à lundi
 

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

Discussions similaires

Réponses
32
Affichages
1 K
  • Question Question
Microsoft 365 macro vba sumifs
Réponses
5
Affichages
750
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…