VBA pour recopie Conditionnelle je suis trop nul

vinceg

XLDnaute Nouveau
je souhaite que Excel recopie des informations
d'une feuille « grille de saisie » vers une feuille « Résultats » avec les contraintes suivantes

- la recopie ne se fait que si la condition est remplie.
- la recopie ne se fait qu’avec certains éléments de la feuille « grille de saisie ».
- la recopie doit se faire dans la feuille de « résultat » dans les emplacement prévus.
- Si l’emplacement est déjà occupé la recopie s’effectue dans le gabarit vierge suivant.
- Si la condition de la feuille « saisie » n’est plus respectée alors les informations clients de la feuille de « résultat » s’efface et Excel remet en ordre les clients qui respectent la condition.
donc si je supprime la condition dans la feuille A la feuille B le prenne en compte.

je ne sais pas du tout comment faire cela sous VBA donc je fais appel à votre talent à tous pour résoudre ce problème ou pour m'expliquer comment faire ce qui serait le mieux.

veuillez trouver ci joint le fichier qui vous expliquera tout cela

d'avance Merci à tout ceux qui pourront m'aider
:eek:
 
V

vinceg

Guest
Re:VBA pour recopie Conditionnelle je suis trop nu

excusez moi voici la piece jointe [file name=RecopieAutomatiqueVBA_20060224130733.zip size=10818]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/RecopieAutomatiqueVBA_20060224130733.zip[/file]
 

Pièces jointes

  • RecopieAutomatiqueVBA_20060224130733.zip
    10.6 KB · Affichages: 26

edelweisseric

XLDnaute Occasionnel
Re:VBA pour recopie Conditionnelle je suis trop nu

Bonsoir vinceg

Rien ne sert de courir .....

Essaie le fichier et tu me dis

Bon courage [file name=RecopieAutomatiqueVBA_20060224130733_20060224182927.zip size=10818]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/RecopieAutomatiqueVBA_20060224130733_20060224182927.zip[/file]
 

Pièces jointes

  • RecopieAutomatiqueVBA_20060224130733_20060224182927.zip
    10.6 KB · Affichages: 27

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:VBA pour recopie Conditionnelle je suis trop nu

Bonsoir Rapidos je dois filer...

EdelWeis je pense que tu t'es planter de fichier en plaçant ton Zip... Il n'y a pas de code...

Voici ma contribution... Avec un beau petit algo...

Bon Week End
[ol]@+Thierry[/ol] [file name=XLD_Recopie_Automatique_VBA.zip size=15007]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/XLD_Recopie_Automatique_VBA.zip[/file]
 

Pièces jointes

  • XLD_Recopie_Automatique_VBA.zip
    14.7 KB · Affichages: 44
V

vinceg

Guest
Re:VBA pour recopie Conditionnelle je suis trop nu

c'est exactement ce que je souhaitais faire merci beacoup c'est super sympa mais est ce que tu pourrais m'expliquer le code que tu as ecrit.
J'aimerais bien le comprendre de bout en bout

Merci encore
problème résolu :) :) :)
 
V

vinceg

Guest
Re:VBA pour recopie Conditionnelle je suis trop nu

serait il possible que les clients qui répondent a la condition se mettent dans la feuille de résultat sans se reclasser par rapport a la feuille d'origine?

merci
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:VBA pour recopie Conditionnelle je suis trop nu

Bonsoir Vinceg, EdelWeiss, le Forum

Voilà pour les commentaires de bout en bout...

Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)

'Ici Déclaration de Variables
Dim WSCible As Worksheet
Dim Plage As Range, Cell As Range
Dim C As Byte, L As Integer, x As Integer


'Ici Définition (Set) d'Objets qui vont être acteur dans l'algo
Set WSCible = Worksheets('Resultats')
Set Plage = Range(Range('O2'), Range('O5000').End(xlUp))
'NB Plage est Dynamiquement constitué

'Définition de Variable
L = 4
'NB 4 est la première Ligne de la Feuille 'Resultats'


'Condition : Si on change une valeur uniquement dans une cellule de la Colonne 'O'
'Pour ce faire si l'Intersection de la Target est Rien on sort de ce code...
If Application.Intersect(Target, Range('O:O')) Is Nothing Then Exit Sub

Leon
'Le Nettoyeur !!

   
'Début de boucle (Extérieure) pour chaque cellule de la plage définie plus haut
   
For Each Cell In Plage
   
       
'Condition : Si la Valeur de la cellule = 1
       
If Cell = 1 Then
           
'Re-initialisation de la Variable x permettant de sauter la colonne 'Memo' sur 'Resultats'
            x = 0
               
             
'Début de seconde Boucle(Intérieure) pour les Colonnes B à I (2 à 9) de 'Grille saisie'
             
For C = 2 To 9
                     
                 
'Condition par Function si la Colonne C est plus grande que C ('Memo')
                 
'on ajoute 1 sinon on reste à C
                  x = IIf(C > 6, C + 1, C)
                 
                 
'envoie des données vers feuille 'Resultats'
                 
'L(Ligne) étant 4 au premier passage, x étant C(Colonne) avec le décalage décrit ci-dessus
                 
'le plus quatre étant le fait que l'on démarre en colonne 'E' sur 'Résulats'
                 
'soit 4 de plus que 'B' sur 'Grille saisie'...
                 
'Cells avec Cell.row et C signifiant La Cellule de 'Grille saisie' sur ligne Scannée
                 
'par la Boucle For Each Cell, et sur la Colonne C par la boucle For Each C
                  WSCible.Cells(L, x + 4) = Cells(Cell.Row, C)
                 
             
'Passage au C suivant dans la Boucle intérieure
             
Next C
             
'Incrémentation de plus 3 pour le décalage sur 'Résultats' (ligne 4, Ligne 7, Ligne 10 etc)
              L = L + 3
             
       
'Fin de Condition
       
End If
       
       
'Passage ç la Cell Suivante dans la Boucle extérieure
       
Next Cell
           
End Sub

Private Sub Leon()
Dim L As Integer
Dim C As Byte

'Boucle Lignes de 4 à 100 avec saut(décalage) de 3
For L = 4 To 100 Step 3
   
   
'Boucle Colonnes sur les 8 colonnes
   
For C = 6 To 14
   
     
'Nettoyage de la Cellule en ligne L et colonne C de 'Resulats'
      Worksheets('Resultats').Cells(L, C).ClearContents
   
Next
Next
End Sub

Par le fait même de cet algo déjà bien tordu pour correspondre à la complexité de tes tableaux et de leur spécificités de formats très peu ergonomiques pour travailler par programmation, il est hors de question d'envisager autre chose sans faire une énorme usine à gaz en VB pour permettre de garder un ordre quelconque dans la Feuille 'Résultats'...

Par conséquent, soit cette solution devrait suffire (reconstruction intégrale du tableau à chaque changement) soit tu expliques mieux les tenants et les aboutissants, car je suis formel je suis certain qu'en final on se complique la vie grandement si on travaille de la sorte...

Non pas que de construire un historique soit difficile, mais c'est le tableau qui pose souci... (voir déjà la complication de mon algorithme pour un truc archi basic normalement sur une feuille « normale »)

En étant dans le 'métier', ne t'inquiète pas, c'est très souvent le même problème entre les simples utilisateurs qui privilégient une présentation du tonnerre et les développeurs qui s'arrachent les cheveux... En clair, il te manque une base de données, ensuite on génère les beaux tableaux...

Bonne Soirée
[ol]@+Thierry[/ol]

Message édité par: _Thierry, à: 25/02/2006 22:51
 

Discussions similaires

Statistiques des forums

Discussions
312 397
Messages
2 088 057
Membres
103 709
dernier inscrit
FrrankX