Problème macro

Akro

XLDnaute Nouveau
Bonjour le forum !

J'ai un problème avec un projet Excel que je dois réaliser en tant que stagiaire. Je suis un novice d'Excel et mes macros sont très brouillon :mad:

J'ai créé un document qui possède plusieurs feuille. Ce document permet de connaitre le statut d'une commande qu'un commercial a réalisé avec une entreprise.

J'ai donc une feuille "Affaire en Cours", un feuille "Affaire Abandonnée", une feuille "affaires Sans nouvelles" et une feuille "Affaire Réalisée".

Lorsqu'une affaire est en cours, je souhaiterai pouvoir la modifier et la passé en "Abandonnée", "Réalisée" ou "Sans Nouvelle" par le moyen d'un formulaire.

Dans ce formule j'ai :
une listebox me permettant je choisir le nom de l'entreprise qui fait la commande.
un txtbox afin d'inscrire le numéro de la semaine à laquelle l'opération est effectuée
3 checkbox afin de savoir si l'opération doit être placé en feuille "Abandonnée", "Sans nouvelles" ou "Réalisée".

J'ai deux problèmes :

Tout d'abord je n'arrive pas à faire correspondre ma listebox avec la ligne correspondant au nom de l'entreprise mais seulement avec la cellule contenant le nom de l'entreprise. Ainsi, je voudrai que la ligne soit sélectionnée et couper/collée dans la feuille correspondant à son nouveau statut défini par la chekbox cochée. Et je voudrai que la ligne coupée soit collée à la suite des autres lignes ou bien insérée en 1ere ligne mais pas à la place d'une autre entrée.

Dans mon travail j'ai réalisé d'autres macros qui marchent ... mais elles ne marchent que pour la première ligne de mes tableaux. Et je ne connais pas le moyen pour que mes macros soit utilisable sur tous le tableau. (Si quelqu'un pouvait m'expliquer comment ça marche ce serait parfais !!!)

Je vous remercie d'avance ! J'espère avoir été clair et que ce n'est pas trop compliqué (pour moi ça l'est :()

Voici le fichier :
(c) CJoint.com, 2007
 

GIBI

XLDnaute Impliqué
Re : Problème macro

Salut,

voici un début de piste pour la création

Private Sub Valider_Click()
'***rechercher la première ligne vide = fin du tableau+1
Lig = Sheets("BDD").Range("A65536").End(xlUp).Row + 1 ' ligne libre
'*** rensiener les cellules en s'appuyant sur le numéro de la ligne et de la colonne
Sheets("BDD").Cells(Lig, 1).Value = TxtRaison_Sociale.Value
Sheets("BDD").Cells(Lig, 2).Value.Value = TxtDépartement.Value


Sheets("BDD").Range("C24").Value = TxtType_Châssis.Value


Si on connait une cellule, pour sélectionner la ligne entière on peut faire
Rows(ActiveCell.Row).Select

Pour selectionner une partie de la ligne la cellule+les 5 suivantes
Range(ActiveCell, ActiveCell.Offset(0, 5)).Select


Maintenant un peu de travail perso et tu avancera

GIBI
 
Dernière édition:

Akro

XLDnaute Nouveau
Re : Problème macro

Merci beaucoup pour ta réponse ! :cool:

J'ai avancé un peu mais je bloc. En gros, ma macro ressemble à ça.

Code:
Sub Actualiser_EnCours()

Dim i As Integer
Dim Tableau_EnCours(2000, 12)

Sheets("En Cours").Select
Lig = Sheets("Sans Nouvelles").Range("A2000").End(xlUp).Row + 1 ' ligne libre

For i = 0 To 2000

[COLOR="Magenta"]If Range("i, 12").Value = "Sans Nouvelles" Then[/COLOR]
Range("i, 12").Select
Rows(ActiveCell.Row).Select.Copy
Sheets("Sans Nouvelle").Select
Lig = Sheets("Sans Nouvelles").Range("A60000").End(xlUp).Row + 1 ' ligne libre
Range(Lig).Select
ActiveSheet.Paste

End If

Next i

End Sub

Ça bug au niveau de la ligne en rose et ça m'indique : La méthode 'Range' de l'objet 'Global' a échoué.

C'est du charabia pour moi ça ^^ :p
Je suppose que mon erreur vient du i qui est surement mal déclaré mais je ne sais pas trop comment faire.
Je précise ce que j'essai de faire. Je voudrai une macro qui parcours les lignes de mon tableau et qui, dès que la valeur "Sans nouvelles" est repéré dans le colonne 12 (L), elle coupe la ligne et la colle sur une ligne VIDE de la feuille "Sans nouvelles".

Encore merci Gibi pour ta réponse, tu m'as quand même bien fais avancer :)
J'attend vos explications avec impatience :eek:

Merci d'avance !
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Problème macro

Bonjour Akro, Gibi

modifies peut être comme suit, à tester dans ton classeur :

2ème Edition : effacé tout, rien compris moi.... désolé...

@+

Edition i ne peut pas être 0 dans ce cas, à voir...
 
Dernière édition:

Akro

XLDnaute Nouveau
Re : Problème macro

Toujours rien :mad:

Code:
Sub Actualiser_EnCours()

Dim i As Integer
Dim Tableau_EnCours(2000, 12)

Sheets("En Cours").Select
Lig = Sheets("Sans Nouvelles").Range("A2000").End(xlUp).Row + 1 ' ligne libre

For i = 24 To 2000

[COLOR="Magenta"]If Cells("i, 12").Value = "Sans Nouvelles" Then[/COLOR]
Cells("i, 12").Select
Rows(ActiveCell.Row).Select.Copy
Sheets("Sans Nouvelle").Select
Range(Lig).Select
ActiveSheet.Paste

End If

Next i

End Sub

Il me répète :

erreur d'exécution '1004'
erreur définie par l'application ou par l'objet (ligne rose)

Est ce qu'il y a un rapport avec le fait que mon tableau contienne des données texte ?

Merci beaucoup pour l'aide que vous m'apportez en tout cas !! :)
 

Staple1600

XLDnaute Barbatruc
Re : Problème macro

Re


Essayes cette macro

Code:
Sub Actualiser_EnCours_II()
Dim i As Integer
Dim Lig As Long
Sheets("En Cours").Select
Lig = Sheets("Sans Nouvelles").Range("A2000").End(xlUp).Row + 1 ' ligne libre
For i = 24 To 2000
If Cells(i, 12) = "Sans Nouvelles" Then
Cells(i, 12).EntireRow.Copy Sheets("Sans Nouvelles").Range("A" & Lig)
Lig = Lig + 1
End If
Next i
End Sub
 

Akro

XLDnaute Nouveau
Re : Problème macro

Désolé de ne pas m'être exprimé avant !

Je viens de tester ta macro et ... c'est parfait :D

Merci à tous le monde de m'avoir aidé, veuillez ne pas "locker" le topic, j'aurais peut être d'autres trucs à demander :eek:

(je viens d'acheter VBA pour les nuls, j'espère que ca m'aidera !)

Encore merci à tous le monde et à bientôt !
 

Discussions similaires

Réponses
1
Affichages
496
  • Question
Microsoft 365 Macro VBA
Réponses
1
Affichages
288

Statistiques des forums

Discussions
312 684
Messages
2 090 916
Membres
104 698
dernier inscrit
miespetico