Soucis sur une ligne de VBA comment la changer

Résolu/Fermé
cc - Modifié par pijaku le 16/08/2016 à 11:05
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 16 août 2016 à 16:04
Bonjour,

Je viens de reprendre un poste et j'ai sur un fichier avec VBA qui ne fonctionne pas et je n'arrive pas à savoir pourquoi cela bloque voici l'écriture :

'Ouverture du fichier de destination

Workbooks.Open Filename:=WbkLoc & "\Import SGO\Import UO - modèle.xls"
Set WbkDest = ActiveWorkbook

Cells(2, 1).Select

    'Nettoyage du fichier de destination
    
        If IsEmpty(Cells(2, 1)) = False Then
    
            Range(Selection, Selection.End(xlToRight).Offset(0, 7)).Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.ClearContents
        
        End If

Cells(2, 1).Select

'Récupération des données

Cells(2, 1).Resize(lig_tab, UBound(tab_data, 2)).Value = tab_data

'MsgBox

WbkSource.Sheets("Outil").Activate
MsgBox "Fichier à importer généré avec succès", vbOKOnly + vbInformation

End Sub


C'est la ligne
Cells(2, 1).Resize(lig_tab, UBound(tab_data, 2)).Value = tab_data 


qui se met en jaune mais pas de message. Pouvez vous me dire comment je peut la changer pour que cela fonctionne. car je ne sais pas les fonction Resize et UBound.

Merci de votre aide
A voir également:

10 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
16 août 2016 à 10:42
As-tu fais des points d'arrêt avant ?
Si tu fais F5, ça repart ?

J'ai déjà eu des cas bizzare avec VBA Excel, parfois, l'environnement fait n'imp avec les points d'arrêt, surtout en cas d'erreur.
J'ai plusieurs fois été contraint de refaire un fichier Excel en copiant le code, car un point d'arrêt invisible était présent.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 16/08/2016 à 11:09
Bonjour,

Ajoute ces deux lignes avant la ligne qui plante :
'Récupération des données
MsgBox lig_tab
MsgBox UBound(tab_data, 2)
Cells(2, 1).Resize(lig_tab, UBound(tab_data, 2)).Value = tab_data


Et dis nous ce qui se passe et éventuellement le contenu des MsgBox...


Salutations à NHenry au passage...

Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
0
Je viens de mettre les deux lignes en plus, mais cela ne fonctionne pas :


le contenu des MsgBox "Fichier à importer généré avec succès",vbOKOnly + vblnformation

Le contenu il doit y avoir des chiffres dans les colonnes :

A2 ; B2 ; C2 ; D2 ; E2 ; F2

Maintenant cela est vrai je ne suis pas du tout une pro dans ce genre de travail sur excel. Mais on me laisse pas le choix que de le faire. Alors merci de me dire si je ne suis pas assez explicite et si je ne comprend pas votre demande.

J'ai un message erreur d'execusion "1004"
Erreur définie par l'application ou l'objet

Merci de votre aide dans l'attente de vos suggestions

Bien cordialement
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
16 août 2016 à 11:52
Il nous faudrait donc un exemple de fichier que tu importes : Import UO - modèle.xls
Merci
Pour joindre un fichier sur les forums de ccm il faut :
> se rendre sur le site : https://www.cjoint.com/
> cliquer sur "Parcourir"
> rechercher le fichier
> cliquer sur "Ouvrir"
> cliquer sur "Créer le lien Cjoint"
> copier le lien
> revenir ici le coller dans une réponse
0
Voici le fichier.

C'est sur en cliquant sur le GO du cadre Import générer le fichier à importer pour la saisie des UO.

Les autres GO fonctionnes j'ai pu modifier certaines lignes c'est dans le premier onglet outil.

http://www.cjoint.com/c/FHqlSwCuvA0


Merci de votre aide

Bien cordialement
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
16 août 2016 à 14:06
Oui, mais sans le fichier : \Import SGO\Import UO - modèle.xls
je ne peux rien tester...

Par contre, il y a une erreur, déjà, sur nb_lignes.
Il convient de remplacer :
nb_lignes = Range("C2").End(xlDown).Cells.Count

par :
nb_lignes = Range("C2").End(xlDown).Cells.Row

Egalement à remplacer :
Dim nb_lignes As Integer

par :
Dim nb_lignes As Long
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Voici le modèle que j'ai trouvé avec un peut de mal :

http://www.cjoint.com/c/FHqmuSvlc50

Merci de votre aide
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
16 août 2016 à 14:23
Je n'ai effectivement pas besoin d'un autre fichier.
Par contre, ton fichier n'arrête pas de planter...
Les Application.Match ralentissent énormément.
Décris moi ce que tu souhaite faire avec ces lignes :
Rech = Application.Match(SGO, Application.Index(tab_data, 0, 1), 0)

Tu recherches, dans le tableau tab_data si SGO existe?
OK, mais tu cherches dans qu'elle colonne de tab_data?
0
Comme avant je ne m'en occupé pas je pense que cela doit être la même chose que mes activité par le n° AFFAIRE dans cette colonne.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
16 août 2016 à 14:42
Peux tu nous décrire précisément ce qu'est censé faire cette macro dans sa globalité?
0
Ce fichier nous permet à partir de notre extraction SGO (logiciel comptable) ou est répertorier toutes les affaires (avec facture et UO nob heure faite sur l'affaire) et notre logiciel FLUIDO ou nous retrouvons toutes nos affaires donc tous les contrats ou nous faisons la planif et autres interventions. de vérifier l'incohérence et de mettre à jour SGO car le nbr d'UO ne s'enlève pas automatiquement de l'affaire nous sommes obliger de le faire manuellement. donc ce fichier nous fournit toutes les annomalies.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
16 août 2016 à 15:13
Alors, ok, mais comment ferais tu si tu n'avais pas cette macro?
Décris moi bien chacune des étapes que tu devrais accomplir manuellement...
0
extraction SGO puis extraction FLUIDO.

Prendre les deux fichiers : comparer avec les n° d'affaire pour s'avoir le montant de l'affaire et les actions faites dessus. Regarder si on à fait l'audit avec un auditeur interne ou externe. Si interne enlever des UO qui doit être aussi en accord avec les montant des affaires. pour un sous traitant idem mais avec un autre montant UO a enlever. Voir combien de DA on a fait pour enlever des UO pour chaque année. si les affaires sont terminée les passer en T sur SGO. si audit complémentaire rajouter les UO et vérifier le montant si pris en compte dans SGO.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 16/08/2016 à 15:41
N'ayant accès qu'à un seul classeur, il faut que tu soit précis!
On ne parle pas de numéro d'affaire, mais de cellule, ligne, colonne, feuilles etc...

Comment veux tu que je comprenne cette phrase :
Voir combien de DA on a fait pour enlever des UO pour chaque année
0
Ayant remplacer toues les lignes :

nb_lignes = Range("C2").End(xlDown).Cells.Count
par
nb_lignes = Range("C2").End(xlDown).Cells.Row
et
Dim nb_lignes As Integer
par
Dim nb_lignes As Long

et avoir rajouter
Récupération des données
MsgBox lig_tab
MsgBox UBound(tab_data, 2)
Cells(2, 1).Resize(lig_tab, UBound(tab_data, 2)).Value = tab_data

Le fichier tourne et cela fonctionne.
En tout cas merci de ton aide très précieuse. Et de ta patience avec moi. Car tu devais vraiment t'arracher les cheveux avec mon fichier.

Merci encore de ton aide.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
16 août 2016 à 16:04
Il tourne, mais qu'est ce que ça doit être long...
Le principal est que cela fonctionne.
A++
0