VBA Excel - Erreur 9 - Variable objet ou variable de bloc With non définie

#626b81

Bonjour à tous,

Je débute dans la programmation VBA Excel.

Mon fichier se compose de quatre colonnes (dont une actuellement vide : la colonne D).

Pour chaque semaine, j'ai une disponibilité de pièce (première ligne pour chaque semaine) sur le nombre total de pièces dans le parc (deuxième ligne de chaque semaine).

Mon but est de copier la valeur du parc total de pièces qui se trouve dans la colonne C, de mettre cette valeur dans la colonne D et d'effacer la ligne qui se retrouve ainsi vide. J'ai écrit le code suivant (pas encore codé pour effacer les lignes vides) mais ai l'erreur suivante "Erreur 9 - Variable Objet ou variable de bac With non définie." POurriez-vous m'aidez à trouver d'ou vient mon erreur et comment je pourrais rectifier le code s'il vous plaît ?

Ma macro est en PJ avec le fichier Excel.

Merci d'avance pour votre aide !

Guilhem.

2tablo.xlsm (17.56 Ko)
question forum exce

bonjour,

ton classeur ne contient pas de feuille nommée "Moteurs"

Effectivement merci !

Voici le classeur avec la feuille "Moteurs".

Guilhem

4tablo.xlsm (17.56 Ko)

bonjour,

1) ta variable i est vide alors qu'elle devrait être >= 1

2) écris cells plutôt que cell

3) vérifie bien que ce que tu as en colonne D est une référence de plage valable, si c'est bien cela que tu souhaites faire...

Bonsoir le fil, bonsoir le forum,

Je plussoie l'Acide et rajoute :

Set Col = IIf(Feuille.Range(Cell(i, 4)).Value = "", Feuille.Range(Cell(i, 4)), Feuille.Cells(Application.Rows.Count, 4).End(xlUp).Offset(1, 0))

Outre le Cell au lieu de Cells, il y a aussi le Range(Cell(i, 4).Value qui devrait se simplifier par Cells(I,4).Value mais comme la variable i n'a pas encore été définie elle vaut zéro... Bug... Et je ne suis pas sûr que Iif fonctionne dans ce cas.

j'écrirais donc :

Set Classeur = ThisWorkbook
Set Feuille = Classeur.Sheets("Moteurs")
i = 1
If Feuille.Cells(i, 4).Value = "" Then Set Col = Feuille.Cells(i, 4) Else Set Col = Feuille.Cells(Application.Rows.Count, 4).End(xlUp).Offset(1, 0)
i = Col.Row
n = i + 1

Pour le reste, je ne comprends absolument pas ce que tu veux faire... Je propose que tu nous envoie un nouveau fichier exemple avec dans un onglet ce que tu as avant et dans un autre ce que tu voudrais après le passage de la macro.

Bonjour,

J'ai essayé avec votre code mais cela ne fonctionne pas, je dois avoir un problème dans mon code qui ne fait pas ce que je veux.

En fait, dans la feuille moteurs qui est remplie à la main, j'ai une disponibilité moteurs.

Mon but serait de transformer le tableau sur cette première feuille afin qu'il ressemble au tableau présent dans la feuille "Obtenu". Cependant, j'aimerais garder le résultat sur la feuille "Moteurs". Pensez-vous que c'est réalisable ?

Voilà l'exemple da la feuille "Obtenu".

Guilhem

3tablo.xlsm (19.71 Ko)

bonjour,

une proposition

Option Explicit

Sub Disponibilité()

    Dim i As Long, n As Long, ws As Object, dl As Long

    'On coupe le rafraichissement pour éviter le mal de mer
    Application.ScreenUpdating = False
    'On coupe les messages d'alerte
    Application.DisplayAlerts = False
    Set ws = Sheets("obtenu")
    ws.Cells.Clear
    With Sheets("Moteurs")
        dl = .Cells(.Rows.Count, 2).End(xlUp).Row
        For i = 1 To dl Step 2
            n = n + 1
            ws.Cells(n, 1) = .Cells(i, 1)
            ws.Cells(n, 2) = .Cells(i, 3)
            ws.Cells(n, 3) = .Cells(i + 1, 3)

        Next i
       End With
        'On rétablit le rafraichissement
        Application.ScreenUpdating = True
        'On rétablit les messages d'erreur
        Application.DisplayAlerts = True

End Sub
be73066f dd82 4c82 9761 8ac45d3b1105

Merci beaucoup, je viens de tester et la même erreur apparaît. Voici l’endroit où elle apparaît, j’essaye de trouver la source de cette erreur mais je ne trouve pas.

bonjour,

avec le fichier

8tablo-2.xlsm (16.29 Ko)
1synthese.xlsm (35.97 Ko)

Merci pour votre aide, sur mon ordinateur personnel cela fonctionne mais pas sur celui de mon lieu de travail ...

Quoi qu'il en soit, je vais énoncer le problème depuis la source pour voir si le problème peut se résoudre sur l'ordinateur de mon lieu de travail.

J'ai plusieurs fichiers (W1, W2, W3, ...) qui contiennent des données dans la feuille "Disponibilité" dans les cellules D4 et D5 (donc sur une colonne).

Mon but est de copier ces données et de les coller dans un fichier nommé Synthèse, dans l'onglet "Synthèse".

Chaque semaine est divisée en une ligne "Available" et "Total" mais je ne souhaite pas les coller sur une colonne, je préfère les coller sur une ligne correspondant à chaque semaine.

Pour chaque semaine, le code teste si les cases correspondant à la semaine k sont vides. Si elles le sont, il remplit ces cases, sinon il passe à la semaine k+1. La macro s'appelle essai et est affectée à la feuille Synthèse.

Je vous joins les photos du code que j'ai écrit afin que vous puissiez le consulter avant d'ouvrir le fichier Synthèse et les fichiers sources.

Pourriez-vous m'aider s'il vous plaît ?

Merci d'avance,

Guilhem.

capture d ecran 2022 08 02 a 11 09 51 capture d ecran 2022 08 02 a 11 11 25
3w1.xlsx (32.98 Ko)
2w2.xlsx (32.99 Ko)
2w3.xlsx (32.97 Ko)
1w4.xlsx (32.98 Ko)
2w5.xlsx (32.98 Ko)
2w6.xlsx (32.98 Ko)
1w7.xlsx (32.98 Ko)
2w8.xlsx (32.98 Ko)
2w9.xlsx (32.98 Ko)
1w10.xlsx (32.98 Ko)
2w11.xlsx (32.99 Ko)
4w12.xlsx (32.98 Ko)
Rechercher des sujets similaires à "vba erreur variable objet bloc definie"